我目前在作业投放成本控制器中使用此方法来显示视图中的总计。但我需要实际存储价值。
def calculate_delivery_total(array)
array.inject(0) { |total, item| (total + item.cost_per_unit * item.hour_count) * item.quantity }
end
所以我的问题更广泛地说,如何使用回调在不同的模型中执行操作。我需要确保它只与相关记录一起工作,而不是所有的工作交付成本。我不确定如何在模型中这样做。
谢谢
答案 0 :(得分:0)
如果我理解正确,那么这可能会做你想要的:
class DeliveryCost < ActiveRecord::Base
belongs_to :job
after_commit do
job.update_total_cost if job
end
def total_cost
# calculate total cost for DeliveryCost instance here
# something like:
cost_per_unit * hour_count * quantity
end
end
class Job < ActiveRecord::Base
has_many :delivery_costs
def update_total_cost
total_job_delivery_cost = calculate_total_cost
end
private
def calculate_total_cost
delivery_costs.inject(0) { |total, delivery_cost| total + delivery_cost.total_cost }
end
end
在对DeliveryCost表进行任何更改时,会触发after_commit
。
请询问是否有不明确的事情。