活跃记录 - 绘制一组中有多少人?

时间:2016-04-02 19:21:02

标签: ruby-on-rails ruby chartkick

我在我的RoR应用程序中使用Chartkick,我正在尝试创建一个饼图,显示每个People中的所有Group。我的团队和人员模型都是HABTM。现在,如果有人知道如何使用活动记录获取每组中的人数,那么该图表正在运行且仅显示多个组(截图和下面的代码),我很喜欢它!

这是我的代码

<%= pie_chart Group.group(:name).count %>

这是截图

enter image description here

这是我的架构

  create_table "people", force: :cascade do |t|
t.string   "phone_number"
t.datetime "created_at",                  null: false
t.datetime "updated_at",                  null: false
t.boolean  "subscribed",   default: true, null: false
t.string   "city"
t.string   "state"
t.string   "zip"
t.string   "country"
 end

 create_table "groups", force: :cascade do |t|
t.string   "name"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end

 create_table "groups_people", id: false, force: :cascade do |t|
t.integer "group_id",  null: false
t.integer "person_id", null: false
end

这是人物模型

class Person < ActiveRecord::Base
has_many :deliveries
has_and_belongs_to_many :groups

这里是群组模型

class Group < ActiveRecord::Base
 has_and_belongs_to_many :people
 has_and_belongs_to_many :messages
end

1 个答案:

答案 0 :(得分:1)

<%= pie_chart Group.includes(:people).all.map {|g| [g.name, g.people.size] }.to_h %>

顺便说一下,最好将这个逻辑移到模型体中。