我有几个相互连接的模型:
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'。我怎样才能得到我需要的结果?谢谢。
答案 0 :(得分:1)
你可以试试这个:
current_company.insurers.map { |ins| ins.contracts.pluck(:commission).sum}
您遇到此类错误,因为当您点击 current_company.insurers
时会返回一个数组,并且您在此阵列上点击了 contract ,这是不正确的。< / p>