如何在MetaWhere中编写此SQL?

时间:2011-03-18 02:20:27

标签: sql ruby-on-rails-3 meta-where

如何使用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返回buddiesfriends

我很感激任何帮助!


编辑:我希望能够查询返回的集合,以便我可以这样做:

inverse_friends

解决方案:没关系上次编辑,我只是​​使用我现有关联上的def is_a_buddy_of?(user) not self.buddies.where(:friend_id >> user.id).empty? end 运算符修改了我的is_a_buddy_of?(user)方法:

|

1 个答案:

答案 0 :(得分:1)

为什么不在用户模型中执行以下操作?:

def buddies
  inverse_friends | friends
end

|是联合运算符。