我想重写这个 SQL 查询:
SELECT p.id, p.name, p.gender, (p.work_done/p.work_total * 100) r1, (p.work_success/p.work_total * 100) r2, p.StartTime, p.EndTime
FROM Persons p
WHERE p.id= params[:id]
AND p.gender = params[:gender]
ORDER BY r1 desc
GROUP BY p.gender
使用最新的 rails 3 finder 方法(例如where, select, group, order
....)
我试过这个但它不起作用:
@list = Persons.select("id, name, gender, (work_done/work_total * 100) r1, (work_success/work_total * 100) r2, StartTime, EndTime").where("id = ? AND gender = ?", params[:id], params[:gender]).order("r1 desc").group("name")
知道我在哪里做错了吗?
编辑:以前我用过这个:
@list = Persons.find_by_sql("same sql code above").group_by {|t| t.name}
在我看来:
<% @list.each do |person, person_list| %>
……
它有效,但是当我尝试使用 finder 方法时,它说:
(undefined method `each' for nil:NilClass)
并在查询数据库时给我这个错误:
Completed 500 Internal Server Error in 280ms