返回所有二级关联的轨道



我目前有三种感兴趣的模型:区域、座位和用户。

区域有许多席位

,席位有许多可用用户。

我想知道 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))

最新更新