我有以下有效记录模型:
class Catalog < ActiveRecord::Base
has_and_belongs_to_many :customers
end
class Customer < ActiveRecord::Base
has_and_belongs_to_many :catalogs
end
现在在我的索引中,我想列出所有这样排序的客户: 首先是那些已经是目录成员的人,然后是所有其他成员。
我尝试过这样的事情:
@customers = Customer.all.joins('LEFT JOIN catalogs_customers ON catalogs_customers.customer_id = customers.id').order('catalogs_customers.catalog_id DESC, customers.company_name ASC')
这接近我的目标,但我得到了目录(无论是什么)的所有客户,然后是所有其他客户。
答案 0 :(得分:0)
你的问题有点不清楚,但我无法发表评论,所以无论如何我都会尽力而为。
听起来您希望列出所有优先考虑与一个特定目录相关联的客户,但您的代码示例并未告诉我们您计划如何设置。我假设你有一个实例变量@catalog_id
。然后,您希望在加入时提供条件,只选择catalogs_customers
catalog_id
。所以尝试类似的事情:
@customers = Customer.all.joins('LEFT JOIN catalogs_customers ON catalogs_customers.customer_id = customers.id').
.where(catalogs_customers: { catalog_id: @catalog_id }).
order('catalogs_customers.catalog_id DESC, customers.company_name ASC')
希望有所帮助。