我在我的RoR应用程序中使用Chartkick,我正在尝试创建一个饼图,显示每个People
中的所有Group
。我的团队和人员模型都是HABTM。现在,如果有人知道如何使用活动记录获取每组中的人数,那么该图表正在运行且仅显示多个组(截图和下面的代码),我很喜欢它!
这是我的代码
<%= pie_chart Group.group(:name).count %>
这是截图
这是我的架构
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
答案 0 :(得分:1)
<%= pie_chart Group.includes(:people).all.map {|g| [g.name, g.people.size] }.to_h %>
顺便说一下,最好将这个逻辑移到模型体中。