2016-04-02 3 views
1

Ich verwende Chartkick in meiner RoR App und ich versuche, ein Kreisdiagramm zu erstellen, das alle People anzeigt, die in jedem Group sind. Mein Gruppen- und Personenmodell sind beide HABTM. Im Moment funktioniert das Diagramm und zeigt nur die Anzahl der Gruppen an (Screenshot und Code unten), wenn jemand weiß, wie man die Anzahl der Leute in jeder Gruppe mit aktivem Rekord ergreift, würde ich es lieben!Active Record - Wie viele Personen in einer Gruppe?

hier ist mein Code

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

ist hier ein Screenshot

enter image description here

hier

mein Schema

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 

hier ist die Person Modell

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

hier ist Gruppenmodell

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

Antwort

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

By the way, es wird besser, diese Logik in Modellkörper zu bewegen.

+0

Ich denke, Sie sind auf dem richtigen Weg, aber ich bekomme diesen Fehler – Bitwise

+0

SQLite3 :: SQLException: in der Nähe "Gruppe": Syntaxfehler: SELECT COUNT (*) AS count_all, Gruppe AS Gruppe FROM "Menschen" GROUP BY "Gruppe " – Bitwise

+0

aktualisieren Sie bitte Ihre Frage mit Modellen und Schema-Code und lassen Sie es mich wissen) – Ilya