我目前有三种我感兴趣的模型:Region,Seat和User。
地区有很多席位,席位有很多可用的用户。
我想知道Rails中最有效的方法是检索位于特定区域下的座位的所有可用用户。
提前致谢。
答案 0 :(得分:4)
尝试:
User.joins(seat: :region).where(regions: { id: REGION_ID_HERE })
答案 1 :(得分:0)
我认为@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
答案 2 :(得分:0)
这应该没有任何加入问题
User.joins(seat: :region).merge(Region.where(id: :id_here))