В настоящее время я работаю над небольшим приложением для социальной сети, и сейчас я пытаюсь создать модель, которая представляет дружбу между пользователями . Вот что я придумал до сих пор:
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 scope ? Что-то вроде
current_user.friendships.requests # => [Friendship, Friendship, ...]
было бы замечательно.
Как сделать эту ассоциацию двунаправленной? Я просто добавлю еще дружба после того, как кто-то подтвердил запрос дружбы, так что моя дружба таблица будет выглядеть примерно так:
| user_id | friend_id | confirmed |
-----------------------------------
| 1 | 2 | true |
| 2 | 1 | true |