Продвинутая модель дружбы и запросы в Rails 3
У меня есть модель дружбы, и для каждой новой дружбы я создаю две новые записи:
- Пользователь1 и Друг1
- Друг1 и Пользователь1
Я могу получить все стандартные сотрудники, такие как: друзья, дружба, 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 ответ
Проверьте ответ на этот вопрос:
Как реализовать модель дружбы в Rails 3 для приложения для социальных сетей?