如何使用MetaWhere(在Rails 3中)编写此查询?
SELECT "users".* FROM "users"
INNER JOIN "friendships" friends
ON "users"."id" = friends."friend_id"
INNER JOIN "friendships" inverse_friends
ON "users"."id" = inverse_friends."user_id"
WHERE friends."user_id" = 4
AND friends."status" = 't'
AND inverse_friends."friend_id" = 4
AND inverse_friends."status" = 't'
我正在尝试在名为User
的{{1}}类中添加一个方法,该方法将从此Railscast on self-referential association返回buddies
和friends
。
我很感激任何帮助!
编辑:我希望能够查询返回的集合,以便我可以这样做:
inverse_friends
解决方案:没关系上次编辑,我只是使用我现有关联上的def is_a_buddy_of?(user)
not self.buddies.where(:friend_id >> user.id).empty?
end
运算符修改了我的is_a_buddy_of?(user)
方法:
|
答案 0 :(得分:1)
为什么不在用户模型中执行以下操作?:
def buddies
inverse_friends | friends
end
|
是联合运算符。