我将如何使用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
类上添加一个方法,该方法buddies
将返回friends
并inverse_friends
从这个Railscast on self-referential association 中返回。
我会很感激任何帮助!
编辑:我希望能够查询返回的集合,这样我就可以做到:
def is_a_buddy_of?(user)
not self.buddies.where(:friend_id >> user.id).empty?
end
解决方案:没关系最后一次编辑,我只是将我的is_a_buddy_of?(user)
方法修改为这个,|
在我现有的关联上使用运算符:
def is_a_buddy_of?(user)
status = false
self.buddies.map do |buddy|
status = true if buddy.id == user.id
end
status
end