مضيفا الاستفسارات SQL إضافية في طريقة عرض Redmine الأساسية (تجاوز عرض في البرنامج المساعد)

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

  •  05-07-2019
  •  | 
  •  

سؤال

وانا اعرف تجاوز وجهة نظر الأساسية Redmine في بلدي المساعد (/views/reports/_details.rhtml). فقط لطباعة بعض البيانات الإضافية، مثل عدد القضايا مفتوحة يتم تعيين وليس تعيينه.

وحاولت تجاوز تحكم بدلا من ذلك وإضافة طريقة للقيام بذلك، لكنني لم يحصل على عمل، لذلك أضفت رمز أدناه إلى عرض (نعم، انها قبيحة، ولكن الصفحة نادرا ما قبل استخدامها).

والآن لمشكلتي، وعرض وحلقات الحوض الصغير كل بتتبع (row.id) ويظهر من المعلومات، مثل عدد القضايا المفتوحة والمغلقة. حتى لقد أضاف استعلام SQL إضافية، لكنه يعمل فقط لأول التكرار تعقب، لبقية فإنه يدل على نفس البيانات مرارا وتكرارا.

وعندما ننظر إلى development.log لا يوجد سوى الاستعلام SQL واحد في ذلك. ولكن عندما 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") %>

والاستعلام SQL في 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

و(لم تستخدم روبي على القضبان أو Redmine قبل ...)

هل كانت مفيدة؟

المحلول

وأنا حلها عن طريق إضافة اثنين من الاستفسارات SQL (في رأي) الذي يحدد كافة القضايا التي المشروع المحدد.

<% @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") %>

وبعد ذلك يمكنني استخدام.

<%= aggregate_link @all_unsigned_issues, { "tracker_id" => row.id, "status" => 5 },
            :controller => 'issues', :action => 'index', :project_id => ((row.is_a?(Project) ? row : @project)) %>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top