プラグイン (/views/reports/_details.rhtml) で Redmine コア ビューをオーバーライドしています。割り当てられている未解決の問題の数など、追加のデータを印刷するだけです。
代わりにコントローラーをオーバーライドしてこれを行うメソッドを追加しようとしましたが、うまくいかなかったので、以下のコードをビューに追加しました (はい、醜いですが、ページが使用されることはめったにありません)。
今私の問題に、ビューはすべてのトラッカー (row.id) をループして、開いている問題と閉じている問題の数などの情報を表示しています。そのため、追加の SQL クエリを追加しましたが、最初のトラッカー イテレーションでのみ機能し、残りは同じデータを何度も表示します。
development.log を見ると、SQL クエリが 1 つしかありません。しかし、row.id (<%= row.id %>) を出力すると、各トラッカーの正しい値が表示されます。
これをどのように解決すればよいですか?
_details.rhtml のコード
<% @total_assigned_and_open ||=
ActiveRecord::Base.connection.select_all("select count(i.id) as total
from
#{Issue.table_name} i, #{IssueStatus.table_name} s, #{Tracker.table_name} t
where
i.status_id=s.id
and i.tracker_id=#{row.id}
and i.project_id=#{@project.id}
and i.assigned_to_id is null
and s.is_closed = 0
group by s.id, s.is_closed, t.id limit 1") %>
development.log の SQL クエリ
select count(i.id) as total
from
issues i, issue_statuses s, trackers t
where
i.status_id=s.id
and i.tracker_id=1
and i.project_id=1
and i.assigned_to_id is null
and s.is_closed = 0
group by s.id, s.is_closed, t.id limit 1
(Ruby on Rails や Redmine を使用したことはありません...)