Rails - 如何使用活动记录来查询嵌套条件?

时间:2011-07-20 23:32:34

标签: ruby-on-rails ruby-on-rails-3 activerecord

假设我有三个模型

User(id, guest(boolean))
 belongs_to :room_user
Room (id)
RoomUser (id, room_id, user_id)
 has_many :users

现在我可以,room.room_users并取回该房间内的所有相关用户。这对于rails来说非常可行。

我现在想做的事情就像Room.room_users_active

所以在Room模型中我有:

def room_users_active
   self.room_users.where(:......)
end

这里的挑战是我希望条件进入用户表。并执行以下操作:

返回用户不是访客的所有room_users(User.guest == false)。

想法?感谢

1 个答案:

答案 0 :(得分:2)

未经测试,但应该可以使用,请尝试让我知道

def room_users_active
   room_users.joins(:users).where('user.guest = false')
end

修正了错误的方法调用,请参阅here