Rails:多个关联查询

时间:2015-11-02 20:58:24

标签: ruby-on-rails-4 activerecord associations

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

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"}}})

这可能吗? 感谢。

1 个答案:

答案 0 :(得分:0)

您可以考虑通过以下方式使用关联:

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

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

Profession.profiles

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

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