Hinzufügen zusätzliche SQL-Abfragen in einer Redmine Kern Ansicht (übergeordnete Ansicht Plugin)

StackOverflow https://stackoverflow.com/questions/1804133

  •  05-07-2019
  •  | 
  •  

Frage

Ich bin ein Redmine Kern Ansicht in meinem Plugin (/views/reports/_details.rhtml) überschrieben. Nur um zusätzliche Daten zu drucken, wie, wie viele offene Punkte zugewiesen und nicht zugewiesen.

Ich habe versucht, den Controller statt und fügen Sie eine Methode außer Kraft zu setzen, dies zu tun, aber ich habe es nie zu arbeiten, so dass ich zu der Ansicht, die den Code (ja, es ist hässlich, aber die Seite nur selten verwendet).

Nun zu meinem Problem, wobei die Ansicht sind Looping Trog alle trackers (row.id) und Informationen zeigt, wie wie viele Fragen sind offen und geschlossen. So habe ich eine zusätzliche SQL-Abfrage hinzugefügt, aber es funktioniert nur für die erste Tracker Iteration für den Rest es die gleichen Daten über zeigt und immer wieder.

Wenn ich die development.log aussehen gibt es nur eine SQL-Abfrage in ihm. Aber wenn ich Ausgang row.id (<% = row.id%>) zeigt es den richtigen Wert für jeden Tracker.

Wie soll ich dieses Problem lösen?

-Code in _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") %>

SQL-Abfrage in development.log

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

(nie benutzt Ruby on Rails oder Redmine vor ...)

War es hilfreich?

Lösung

Ich löste es durch das Hinzufügen von zwei SQL-Abfragen (in der Ansicht), die alle Fragen im Zusammenhang mit dem ausgewählten Projekt auswählt.

<% @all_unsigned_issues ||=
ActiveRecord::Base.connection.select_all("select i.status_id as status, s.is_closed as 
closed, t.id as tracker_id, count(i.id) as total
from
#{Issue.table_name} i, #{IssueStatus.table_name} s, #{Tracker.table_name} t 
where
i.assigned_to_id is null
and i.project_id=#{@project.id}
and i.status_id=s.id
and i.tracker_id=t.id
group by i.id") %>

Dann benutze ich.

<%= aggregate_link @all_unsigned_issues, { "tracker_id" => row.id, "status" => 5 },
            :controller => 'issues', :action => 'index', :project_id => ((row.is_a?(Project) ? row : @project)) %>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top