【问题标题】:How to group records, by a relation name?如何按关系名称对记录进行分组?
【发布时间】:2016-10-01 23:07:46
【问题描述】:

我正在使用 Rails 4.2ChartkickGroupDate 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

我的意图是显示一个图表,显示以下内容:

额外姓名分组的订单或冰淇淋的总购买次数。

在另一种表达方式中,最后一个图表旨在显示最流行的Extras客户消费。

graphs.html.erb

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

图表确实有效,但我无法让它显示 Extra 名称,甚至无法按 Extra 名称分组。

无论如何我的问题是......

  • 如何能够显示 Extra 名称而不是 id?

【问题讨论】:

    标签: ruby-on-rails sqlite ruby-on-rails-4 activerecord chartkick


    【解决方案1】:

    您可以通过AddedExtra 表加入Extra 表。试试下面:

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

    【讨论】:

    猜你喜欢
    • 2017-07-11
    • 1970-01-01
    • 2012-05-23
    • 2020-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多