【发布时间】:2020-09-23 22:59:22
【问题描述】:
我正在尝试从两个不同的模型中查询信息。我有 3 个模型,Company、User 和 Employment
User 和 Company 之间的关系通过 Employment 是多对多的。这意味着我的User 表中没有company_id 列,就在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
如何重新编写查询,以便我可以从employments 表中获取company_id 查询?非常感谢任何回应。
【问题讨论】:
-
join表格,您可以过滤数据。
标签: ruby-on-rails postgresql activerecord rails-activerecord