Rails模型计算错误

时间:2014-06-03 00:53:56

标签: ruby-on-rails model

我有一个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”我得到错误“未定义的局部变量或方法`机会'”

请帮忙。谢谢!

1 个答案:

答案 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