协会澄清

时间:2014-06-26 13:19:40

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

想知道是否有人可以协助这个

我有以下协会

User - has_many :campaigns
Campaign - has_many :donations
           belongs_to :user
Donation - belongs_to :campaign

作为一名用户,我想获得为current_user创建的广告系列所做的所有捐款的总和,所以我尝试了这个

@campaigns = current_user.campaigns
@total_donations = @campaigns.dontations.sum('donation_amount')

但它不是那么简单,因为我必须遍历属于该用户的每个广告系列吗?

最好的办法是什么?范围或实例方法也会更好吗?

任何帮助表示赞赏

1 个答案:

答案 0 :(得分:4)

has_many :through association应该有效:

class User < ActiveRecord::Base
  has_many :campaigns
  has_many :donations, through: campaigns
end

current_user.donations.sum(:donation_amount)