在单独的模型Rails中查询两个不同的模型

问题描述 投票:0回答:1

我正在尝试从两个不同的模型查询信息。我有3种型号,CompanyUserEmployment通过UserCompanyEmployment之间的关系是多对多的。这意味着我的company_id表中没有User列,仅在Employment表中。

Company.where(category: Company::FIRMS).where(company_tier_id: 1).includes(:directory_las, :directory_associates, :directory_lats).order(name: :asc)

has_many :directory_affiliates, -> { where(member_category_id: [5, 14]).order(:user_id)}, class_name: 'User'(this is run on the Company model)

这是我在视图上运行以触发上述查询的代码:

- if company.directory_affiliates.present?
        %h4.company-detail-heading Affiliates
        - company.directory_affiliates.each do |user|
          = user
          %br

查询重现以下SQL查询:

Company Load (1.4ms)  SELECT "companies".* FROM "companies" WHERE "companies"."category" = $1 AND "companies"."company_tier_id" = $2 ORDER BY "companies"."name" ASC  [["category", "Landscape Architecture Firms"], ["company_tier_id", 1]]
  User Load (1.0ms)  SELECT "users".* FROM "users" WHERE "users"."member_category_id" IN (1, 2, 7, 8, 9, 15) AND "users"."company_id" IN (30, 211, 104, 88, 89, 135, 6, 32, 127, 13, 77, 268) ORDER BY "users"."first_name" ASC

如何重新编写查询,以便可以从company_id表中获取employments进行查询?我将非常感谢您的任何答复。

ruby-on-rails postgresql activerecord rails-activerecord
1个回答
0
投票

我发现问题是我使用include而不是joins,因为关联发生了变化。这非常有效:

Company.where(category: Company::FIRMS).where(company_tier_id: 1).joins(:directory_las, :directory_associates, :directory_lats).order(name: :asc)
© www.soinside.com 2019 - 2024. All rights reserved.