我正在尝试根据每个(雇主)拥有的相关记录(Employee)的数量对表(雇主)进行排序/排序 .
以下代码适用于rails控制台,其中Employer记录按员工的数量排序:
Employer.joins(:employees).group(:id).order('count(employees.id)ASC')
但是,当实际尝试在开发时运行它时,我收到此错误:
PG :: InvalidColumnReference:错误:对于SELECT DISTINCT,ORDER BY表达式必须出现在选择列表中
虽然我可以使用'sort_by',但我希望将结果放在ActiveRecord :: Relation格式中 . 任何帮助都将不胜感激 .
1 回答
通过在表达式中添加
distinct
,我能够在控制台中重现此错误:在您的情况下,它将是:Employer.distinct.joins(:employees).group(:id).order('count(employees.id) ASC')
错误消息表明您必须将按(
count(employees.id)
)排序的表达式添加到选择列表中 . 这可以通过显式指定选择列来实现: