Rails返回所有二级关联

我目前有三种我感兴趣的模型:Region,Seat和User。

地区有很多座位,座位有很多可用的用户。

我想知道在Rails中检索位于特定区域下的座位的所有可用用户的最有效方法是什么。

提前致谢。

尝试:

User.joins(seat: :region).where(regions: { id: REGION_ID_HERE }) 

我认为@cschroed的嵌套连接语法可能不起作用,具体取决于数据模型的设置方式。 如果没有,你可以尝试:

 User.joins(:seat).joins('inner join regions ON regions.id = seats.region_id').where(regions: {id: REGION_ID_HERE}) 

在任何一种情况下,只运行一个查询。 如果您已经拥有Region,则可以运行region.users如果您设置了以下内容:

 class Region < ActiveRecord::Base has_many :seats has_many :users, through: :seats end 

这应该没有任何连接问题

 User.joins(seat: :region).merge(Region.where(id: :id_here))