是否可以按照子模型(Jobs
)返回的项目数对结果(ASC
/DESC
)进行排序?
@featured_companies = Company.joins(:jobs).group(Job.arel_table[:company_id]).order(Job.arel_table[:company_id].count).limit(10)
例如:我需要打印职位最高的公司
是否可以按照子模型(Jobs
)返回的项目数对结果(ASC
/DESC
)进行排序?
@featured_companies = Company.joins(:jobs).group(Job.arel_table[:company_id]).order(Job.arel_table[:company_id].count).limit(10)
例如:我需要打印职位最高的公司
7条答案
按热度按时间wpcxdonn1#
导轨5+
在
Rails 5
中引入了对左外连接的支持,因此您可以使用外连接而不是使用counter_cache
来执行此操作。这样您仍然可以保留具有0个关系的记录:.to_sql
获得):*icomxhvb2#
如果您希望经常使用这个查询,我建议您使用内置的counter_cache
然后用它来
qv7cva1a3#
@user24359正确的应该是:
icomxhvb4#
类似于:
suzh9iv85#
添加到Tan的回答中。要包含0关联
默认情况下,
joins
使用内部连接。我尝试使用left join
包含0关联l3zydbqr6#
另外,
direct raw SQL
从rails 6中删除了,所以你需要在Arel
中 Package SQL(如果raw SQL
是安全的,这意味着安全地避免使用用户输入,从而避免使用SQL injection
)。Arel.sql("count(companies.id) DESC")
ulmd4ohb7#