#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