Rails组计算复杂的关联

时间:2017-05-15 16:37:57

标签: ruby-on-rails postgresql count associations grouping

我想对名为company_friend的{​​{1}}关联进行分组和统计,此表格中有一个名为name的列。

我使用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

我想使用company_fiend.name列进行分组

预期输出应如下所示:

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

我正在做:

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

但我明白了:

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...

1 个答案:

答案 0 :(得分:2)

这就是我需要的:

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

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