我只想计算用户付费参加的所有活动事件的总数。如果你能告诉我,我会很感激,因为我非常不确定。非常感谢
event.rb
has_many :payments
payment
belongs_to :event在event.rb中,我尝试了以下方法,但没有成功
def self.active_events
active_events = live_events.open_events
active_events.all.each do |event|
event.price * event.payments.count
end
end发布于 2017-01-31 17:57:30
你可以简单地按照以下方式来做,
total = 0
Event.live_events.open_events.find_each { |e| total += e.price * e.payments.count }在Event.rb中,将其放入有意义的名称的方法中。这对你有用。
def self.total_price_for_active_events
total = 0
Event.live_events.open_events.find_each { |e| total += e.price * e.payments.count }
total
end最优方式
def self.total_price_for_active_events
Event.live_events.open_events.joins(:payments).sum("events.price")
end发布于 2017-01-31 17:54:26
你的开局太好了!不幸的是,您所拥有的只是开始;您正在生成一个数组,该数组包含每个事件的总和。剩下的就是把它们加在一起:
def self.active_events
active_events = live_events.open_events
costs = active_events.all.each do |event|
event.price * event.payments.count
end
costs.reduce(0) do |sum,x|
sum + x
end
end你也可以得到真正的花哨和简单的使用:
costs.reduce(0, :+)https://stackoverflow.com/questions/41964090
复制相似问题