Продвинутая модель дружбы и запросы в Rails 3 - PullRequest
0 голосов
/ 04 марта 2011

У меня есть модель дружбы, и для каждой новой дружбы я создаю две новые записи:

  • User1 и Friend1
  • Friend1 и User1

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

На данный момент, чтобы найти общих друзей, я использую что-токак:

has_many :common_friendships, :class_name => 'Friendship', :conditions=>'friendships.user_id = #{self.id}' do
  def common_with(friend)
    joins("inner join friendships fl2 on friendships.friend_id = fl2.user_id").where("fl2.friend_id = #{friend.id}")
  end
end 

Также я могу использовать полный запрос с finder_sql как:

select distinct *
from friendships fl1
inner join friendships fl2 on fl1.friend_id = fl2.user_id
where fl1.user_id = 1  and fl2.friend_id = 2

Как я могу сделать это элегантно в Rails 3?

1 Ответ

0 голосов
/ 19 апреля 2011
...