ruby on rails - Passing value from child class to parent -


a package made of expense, revenue, , balance based on sales made of amount. how add each @sale.amount @package.revenue?

model package.rb:

class package < activerecord::base   has_many :sales end 

model sale.rb:

class sale < activerecord::base   belongs_to :package end 

routes.rb:

rails.application.routes.draw   resources :packages     resources :sales     end   end end 

activerecord has handy sum method calculating sum of values in column:

class package < activerecord::base   has_many :sales    def revenue     sales.sum(:amount)   end end 

note while looks similar sales.map(&:amount).sum performance vastly better because activerecord let database calculation , retrieve single value (the final sum) database, whereas other method fetch every associated record database (of there may many thousands), instantiate sale object each one, amount each sale object , calculate sum.


Comments