2017-05-15 1 views
0

Je veux grouper et compter par mon association has_one appelée company_friend cette table a une colonne appelée name.Le groupe de Rails compte les associations complexes

J'utilise Rails 5.

class Appointment 
    belongs_to :company_friendship, touch: true 
    has_one :company_friend, through: :company_friendship 
end 

class CompanyFriendship < ApplicationRecord 
    belongs_to :company, touch: true 
    belongs_to :company_friend, touch: true, class_name: "Company" 
end 

class Company < ApplicationRecord 
    has_many :company_friendships, autosave: true 
    has_many :company_friends, through: :company_friendships, autosave: true 
end 

Je veux groupe en utilisant la colonne company_fiend.name

La sortie attendue devrait ressembler à ceci:

{"nestle" => 10, "cocacola" => 20, "los pollos hermanos" => 50} 

Je suis faire:

Appointment.joins(:company_friend).group("company_friends.name").count 

Mais je reçois:

ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR: missing FROM-clause entry for table "company_friends" 
LINE 1: SELECT COUNT(*) AS count_all, company_friends.name AS compan... 
+0

Pouvez-vous montrer vos modèles '' CompanyFriendship' et CompanyFriend'? – Gerry

+0

fait, a ajouté le reste des modèles @Gerry – user1262904

Répondre

1

Voici ce que je avais besoin:

Appointment.joins(:company_friend).group("companies.name").count 

{"Barton Mines"=>772, ... }