ActiveRecord查询模型按关联属性

时间:2015-08-28 16:14:56

标签: ruby-on-rails activerecord

在我的代码中,Room has_many:users,Users拥有:name属性

我们还说我有NameArr,一组名字。

获得所有拥有Arr用户的房间的最佳方法是什么?

(例如,如果Arr = [" John"," Mark"," Matt"]那么我希望所有房间都有一个名字为"约翰"和一个名字为#34的用户;马克"和一个名字为#34的用户;马特")

2 个答案:

答案 0 :(得分:2)

您需要INNER JOIN来满足需求。

Room.joins(:users).
    where(users: { name:  ["John", "Mark", "Matt"] } )

答案 1 :(得分:0)

请试试这个

Room.joins(:users).where("users.name in (?)", nameArr).group("rooms.id").having("count(distinct users.name)=?", nameArr.count)