Как реализовать модель дружбы в Rails 3 для приложения социальной сети?

В настоящее время я работаю над небольшим приложением для социальной сети, и сейчас я пытаюсь создать модель, которая представляет дружбу между пользователями . Вот что я придумал до сих пор:

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      |
20
задан t6d 10 April 2011 в 15:24
поделиться