我目前有三种感兴趣的模型:区域、座位和用户。
区域有许多席位,席位有许多可用用户。
我想知道 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.users
,如果您设置了以下内容:
class Region < ActiveRecord::Base
has_many :seats
has_many :users, through: :seats
end
这应该在没有任何连接问题的情况下工作
User.joins(seat: :region).merge(Region.where(id: :id_here))