ActiveRecord_Associations_CollectionProxy的未定义方法

时间:2016-05-31 12:54:32

标签: ruby-on-rails-4 activerecord associations

我有几个相互连接的模型:

class InsurerPayment < ActiveRecord::Base
  belongs_to :insurer
  belongs_to :company
  has_many :contracts
end

class Insurer < ActiveRecord::Base
  belongs_to :company
  has_many :contracts
  has_many :insurer_payments, dependent: :destroy
end

class Contract < ActiveRecord::Base
  belongs_to :company
  belongs_to :insurer
  belongs_to :insurer_payment
end

当我在 insurer_payments_controller commissions = current_company.contracts.pluck(:commission).sum时,我会获得与当前公司相关的所有合同的佣金总额。但我需要获得属于我现有公司保险公司的佣金总额。做commissions = current_company.insurers.contracts.pluck(:commission).sum之类的事情会给我一个错误:#Insurer :: ActiveRecord_Associations_CollectionProxy:0x007f92450f79c0 的未定义方法`contract'。我怎样才能得到我需要的结果?谢谢。

1 个答案:

答案 0 :(得分:1)

你可以试试这个:

current_company.insurers.map { |ins| ins.contracts.pluck(:commission).sum}

您遇到此类错误,因为当您点击 current_company.insurers 时会返回一个数组,并且您在此阵列上点击了 contract ,这是不正确的。< / p>