在我们系统忠有 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 的时候,不知道还能不能这样排。