我有一个投票模型和一个展示位置模型,可以跟踪每个月末员工在投票结果中的完成情况。
投票架构
create_table "votes", :force => true do |t|
t.integer "phone_id", :limit => 8
t.integer "employee_id"
t.integer "score"
end
展示位置架构
create_table "placements", :force => true do |t|
t.integer "employee_id"
t.date "month"
t.integer "votes_count", :default => 0
t.integer "position"
t.integer "total_score", :default => 0
end
我可以按照这样的特定月份的大多数投票顺序检索展示位置:
business.placements.where(month: month).order('votes_count desc')
我希望按照平均分数(而不是大多数选票)的顺序获得展示位置。
平均分数可以这样计算出来:
average_score = placement.total_score/placement.votes_count
我如何通过average_score命令我的where语句?
答案 0 :(得分:2)
试试这个
business.placements.where(month: month).order('total_score / votes_count desc')
答案 1 :(得分:0)
这是一个很长的镜头,但尝试
business.placements.where(month: month).select('placements.*, (placements.total_score/placements.votes_count) AS average_score').order('average_score')