Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 协会澄清_Ruby On Rails_Ruby_Ruby On Rails 4_Associations - Fatal编程技术网

Ruby on rails 协会澄清

Ruby on rails 协会澄清,ruby-on-rails,ruby,ruby-on-rails-4,associations,Ruby On Rails,Ruby,Ruby On Rails 4,Associations,我有以下联想 User - has_many :campaigns Campaign - has_many :donations belongs_to :user Donation - belongs_to :campaign 作为一个用户,我希望获得当前用户创建的活动的所有捐款总额,所以我尝试了这个方法 @campaigns = current_user.campaigns @total_donations = @campaigns.dontations.sum('do

我有以下联想

User - has_many :campaigns
Campaign - has_many :donations
           belongs_to :user
Donation - belongs_to :campaign
作为一个用户,我希望获得当前用户创建的活动的所有捐款总额,所以我尝试了这个方法

@campaigns = current_user.campaigns
@total_donations = @campaigns.dontations.sum('donation_amount')
但这并不是那么简单,因为我必须循环浏览属于该用户的每个活动。对吗

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

a应该可以:

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

current_user.donations.sum(:donation_amount)
class用户
A应在以下情况下工作:

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

current_user.donations.sum(:donation_amount)
class用户
谢谢@Stefan,这就搞定了,我的错误是在我不需要的时候试图通过活动模型访问。我猜@Stefan做了什么?可以通过
捐赠。加入(:活动)。何处(营地:{user\u id:})。总和(:捐赠\u amount)
有许多
类方法支持速记+1谢谢@Stefan,这就搞定了,我的错误是在我不需要的时候试图通过活动模型访问,我猜?哪一个@Stefan做了可以通过
generation.joins(:活动).where(campaings:{user\u id:}).sum(:generation\u amount)
完成。
有许多
类方法支持速记+1.