我有一个Opportunity
模型,其属性包括:
derated_sales
est_full_value
est_workshare
p_win
我正在尝试计算以下内容:
derated_sales = est_full_value.to_f * (est_workshare.to_i/100).to_f * (p_win.to_i/100).to_f
以下是我的模型的代码:
class Opportunity < ActiveRecord::Base
after_save :calculate_derated_value
def calculate_derated_value
opportunity.derated_sales = est_full_value.to_f * (est_workshare.to_i/100).to_f * (p_win.to_i/100).to_f
end
end
然而,在我点击“创建”后,“derated_sales”我得到错误“未定义的局部变量或方法`机会'”
请帮忙。谢谢!
答案 0 :(得分:1)
你应该说self.derated_sales
。由于calculate_derated_value
是对Opportunity实例的调用,因此您调用的任何内容都将在对象上调用。
class Opportunity < ActiveRecord::Base
before_save :calculate_derated_value
def calculate_derated_value
self.derated_sales = self.est_full_value.to_f * (self.est_workshare.to_i/100).to_f * (self.p_win.to_i/100).to_f
end
end
此外,如果要将值保存到数据库,则应将其设置为before_save
而不是after_save
。在数据库中创建记录后发生after_save
。