Rails ActiveRecord 多次 include 同一个表的排序

yakjuly · October 18, 2012 · Last by yakjuly replied at October 18, 2012 · 2962 hits

在我们系统忠有 3 种类型的公司 我们创建为类 CompanyA, CompanyB, CompanyC 他们用同一个表 companies 用 STI 实现。

有一个合同 Policy 需要三个公司来签约。Policies 表有 comapny_a_id, company_b_id, company_c_id

在页面上需要对 CompanyA 的名称来排序。但是为了避免 N+1 查询 又得 include CompanyB 和 CompanyC.

以前一直头疼这个问题,今天发现可以这样写。

policies = Policy.includes(:company_a).order("companies.name") policies = policies.includes(:company_b, :company_c).page(params[:page])

结果是我想要的。神奇!

不过如果 需要关联表查询 company_b 和 company_c 的时候,不知道还能不能这样排。

这样也可以吧? Policy.includes(:company_a => [:company_b, :company_c]).order("companies.name")

@hooopo 不行,你的写法是 :company_a 与 (company_b, company_c) 关联了。

You need to Sign in before reply, if you don't have an account, please Sign up first.