Как группировать записи по имени отношения?

#ruby-on-rails #sqlite #ruby-on-rails-4 #activerecord #chartkick

#ruby-on-rails #sqlite #ruby-on-rails-4 #activerecord #chartkick

Вопрос:

Я использую Rails 4.2, Chartkick и GroupDate gems для отображения статистики о приобретенных заказах.

order.rb

   class Order < ActiveRecord::Base
    ...
    has_many :ice_creams
    ...
  end
  

ice_cream.rb

   class IceCream < ActiveRecord::Base
    ...
    has_and_belongs_to_many :flavors
    has_many :added_extras
    has_many :extras, :through => :added_extras
    belongs_to :order
    ...
  end
  

extra.rb

   class Extra < ActiveRecord::Base
    ...
    has_many :added_extras
    has_many :extras, :through => :added_extras
    ...
  end
  

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

Общее количество приобретенных заказов или мороженого, сгруппированных по имени Extra.

В другом выражении последняя диаграмма предназначена для отображения наиболее популярных дополнительных функций, используемых клиентами.

graphs.html.erb

 <%= line_chart IceCreams.all.joins(:added_extras).group(:extra_id).count  %>
  

Диаграмма действительно работает, но я не могу заставить ее отображать дополнительное имя или даже группировать по дополнительному имени.

 Индексы диаграммы ** Дополнительно ** по его идентификатору

В любом случае, мой вопрос…

  • Как иметь возможность отображать дополнительное имя вместо идентификатора?

Ответ №1:

Вы можете присоединиться к дополнительной таблице с помощью AddedExtra table. Попробуйте ниже:

 IceCreams.joins(added_extras: :extra).group('extras.name').count
  

Комментарии:

1. Спасибо, чувак, ты меня спас. Можете ли вы предоставить ссылку или документацию?

2. Вы можете найти на этой странице руководства по Rails в главе 12 Объединение таблиц. guides.rubyonrails.org/active_record_querying.html