Rails: 多个关联查询

Rails: multiple associations query

我有这样的关联:职业 -> 订单 -> 个人资料 -> 位置

Class Profession < ActiveRecord::Base
  has_many: orders
end

Class Order < ActiveRecord::Base
  has_one :profession
  belongs_to :profile
end

Class Profile < ActiveRecord::Base
  has_one :location
  has_many :orders
end

Class Location < ActiveRecord::Base
  belong_to :profile
end

我需要找到 location.city 中的职业。 例如我试试这个:

Profession.joins(:orders).where(orders: {profile: {location: {city: "Simferopol"}}})

这可能吗? 谢谢

您可以考虑使用以下关联:

class Profession < ActiveRecord::Base
  has_many :orders
  has_many :profiles, through: :orders 
end

这可能会让您的生活更轻松,您可以致电:

Profession.profiles

这将 return 给定状态的所有配置文件。对我来说似乎不那么混乱。由于您仍然需要到达与配置文件关联的位置,我相信有一个更优化的解决方案,但我相信这种方法比建议的更好:

Profession.joins(:orders).where(orders: {profile: {location: {city: "Simferopol"}}})