0

この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| %>

....

うまくいきましたが、ファインダーメソッドを使用しようとすると、次のように表示されます。

(undefined method `each' for nil:NilClass)

データベースにクエリを実行すると、次のエラーが表示されます。

Completed 500 Internal Server Error in 280ms
4

1 に答える 1

0

これは機能しますか?

@list = Persons.select("id, name, gender, (work_done/work_total * 100) r1, (work_success/work_total * 100) r2, StartTime, EndTime").where("testrun_id = ? AND gender = ?", params[:id],  params[:gender]).order("r1 desc").group("gender")
于 2012-09-04T22:02:41.110 に答える