0

У меня есть следующие запросы, я знаю, что это выглядит очень плохо.Улучшение запросов активной записи

Примечание: Я добавил их к переменным экземпляра, потому что я буду использовать их внутри Highcharts JS библиотеки так что каждая переменная экземпляра будет представлять один столбец/бар/линию внутри Highcharts JS

tickets_controller.rb

def priorities_chart 
    priority_base = Ticket.includes(:priority) 
    @high_tickets_counter = priority_base.where(priorities: {name: 'High'}).count 
    @medium_tickets_counter = priority_base.where(priorities: {name: 'Medium'}).count 
    @low_tickets_counter = priority_base.where(priorities: {name: 'Low'}).count 
    end 

    def statuses_chart 
    status_base = Ticket.includes({ticket_statuses: :status}) 
    @open_tickets_counter = status_base.where(statuses: {ticket_status: 'Open'}).count 
    @in_progress_tickets_counter = status_base.where(statuses: {ticket_status: 'In Progress'}).count 
    @pending_tickets_counter = status_base.where(statuses: {ticket_status: 'Pending'}).count 
    @solved_tickets_counter = status_base.where(statuses: {ticket_status: 'Solved'}).count 
    @closed_tickets_counter = status_base.where(statuses: {ticket_status: 'Closed'}).count 
    end 

    def subjects_chart 
    subject_base = Ticket.includes({student: :subjects}) 
    @subject_1_counter = subject_base.where(subjects: {subject_title: 'Subject 1'}).count 
    @subject_2_counter = subject_base.where(subjects: {subject_title: 'Subject 2'}).count 
    @subject_3_counter = subject_base.where(subjects: {subject_title: 'Subject 3'}).count 
    @subject_4_counter = subject_base.where(subjects: {subject_title: 'Subject 4'}).count 
    @subject_5_counter = subject_base.where(subjects: {subject_title: 'Subject 5'}).count 
    end 

Мне нужно улучшить этот уродливый вид и добиться следующего:

1, что если у меня есть другие предметы с разными именами или более 10 предметов, мне нужен запрос, чтобы справиться с этим, не указав заголовок темы как я здесь делаю.

2- есть лучший способ написать priority_chart и statuses_chart?

ответ

0

Я попытался перевести свой рабочий пример на ваш случай.

def subjects_chart 
    search = [ 'Subject 1', 'Subject 2', 'Subject 3', 'Subject 4' ] 
    subject_base = Ticket.includes({student: :subjects}) 
    @subject_counter = 
    subject_base.where(subjects: { subject_title: search }). 
    group('tickets.id'). 
    count('subjects.id') 

конец

это работает?

+0

Я еще не пробовал это, но для диаграммы предметов он все еще указывал, что он должен визуализировать, и я использую образцы данных, а не реальные, поэтому, когда заголовок темы изменяется, диаграмма больше не работает. что, если его больше четырех, так что все здесь ограничено, мне нужно это изменить. –

+0

, когда субъект меняется, и нет необходимости искать, группировать по теме. Я просто попытался дать вам идею. всего наилучшего. – devanand

+0

не работает, как я ожидал, также он имеет только одну переменную, я не могу использовать ее для диаграммы –

Смежные вопросы