[英]Order by count of a has_many association
我的模型是:
service_provider有_很多问题,问题属于_到service_provider
在Activeadmin中,我想索引我的service_providers并按他们的questions_count对其进行排序。
因此,要获取一个字段,我可以进行排序,如下定义我的default_scope:
scope "all", :default => true do |sp|
sp.joins("LEFT JOIN questions on questions.service_provider_id = service_providers.id")
.select("service_providers.*, COUNT(service_provider_id) as questions_count")
.group("service_providers.id")
end
我的列定义如下所示:
column :questions, :sortable => "questions_count" do |sp|
sp.questions_count
end
在索引我的服务提供者时,一切看起来都很好。 但是,当我按他们的questions_count进行查询时,会出现以下错误:
SQLite3::SQLException: no such column: service_providers.questions_count: SELECT service_providers.*, COUNT(service_provider_id) as questions_count FROM "service_providers" LEFT JOIN questions on questions.service_provider_id = service_providers.id GROUP BY service_providers.id ORDER BY "service_providers"."questions_count" desc LIMIT 30 OFFSET 0
因此,他尝试按“ service_providers”。“ questions_count” desc命令排序。 实际上,他应该按“ questions_count” desc排序。
有什么建议,我如何告诉他在他的订单陈述中使用正确的字段名?
它应该是
ServiceProvider.joins(:questions).group("service_providers.id").order("count(service_providers.id) DESC")
.order("COUNT(service_provider_id)")
要不就
.order("questions_count")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.