rails,activerecord sum然后命令

我有一个属于用户的工作模型和用户has_many工作。 我想创建一个AR查询,计算每个用户的工作日总数,然后按降序排序。

到目前为止我有这个,但是给了我一个错误:(列“Job.id”必须出现在GROUP BY子句中或者用在聚合函数中)

@work_days = Job.group(:user).order('SUM(total_days)') 

我似乎无法使用.order方法工作 – 是否有我遗漏的东西? 提前致谢!

你可以写下你的查询: –

 Job.group(:user_id).select('SUM(total_days) as tot').order('tot desc') 

与之前略有不同

 Job.group(:user_id).order('sum_total_days DESC').sum(:total_days) 

现有的答案对我没有用,我不得不稍微编辑group方法。 如果我使用你的模型(即用户),我需要列出组方法中的每个用户属性。

即:像:

 user_attrs = User.new.attributes.keys.map { |key| "users.#{key}" }.join(",") Job.group(user_attrs).order('sum_total_days DESC').sum(:total_days) 

我不知道这是否真的适用于你的情况,但在这个问题上花了很多时间,我想我会分享对我有用的东西。