В настоящее время я работаю над небольшим социальным сетевым приложением, и сейчас я пытаюсь создать модель, которая представляет дружбу между пользователями. Это то, к чему я придумал:
class User < ActiveRecord::Base
# ...
has_many :friendships
has_many :friends, :through => :friendships
end
class Friendship < ActiveRecord::Base
belongs_to :user
belongs_to :friend, :class_name => 'User'
end
Моя модель дружбы имеет поле, подтвержденное как логическое, которое я бы хотел использовать определить дружбу как ожидающую или подтвержденную.
Как я могу получить доступ ко всему ожидающему запросу для определенного пользователя? Могу ли я как-то определить это использование метода областей Rails? Что-то вроде
current_user.friendships.requests # => [Friendship, Friendship, ...]
было бы здорово.
Как я могу сделать эту ассоциацию двунаправленной? Я просто добавляю еще один дружба, как только кто-то подтвердил просьбу друга, чтобы моя дружба таблица будет выглядеть примерно так:
| user_id | friend_id | confirmed |
-----------------------------------
| 1 | 2 | true |
| 2 | 1 | true |