Rails算术运算错误:未定义的方法`*'为零:NilClass

时间:2012-03-03 22:03:13

标签: sql ruby-on-rails ruby

我有两个表:Usertable1table2User has_many table1User has_many table2table2有3列:column1column2column3。我想要做的是将column1column2中的值乘以数字并将其保存到column3

在我的table2.rb类文件中,我定义了这个方法:

def calculate(tablerow)
  tablerow.column3 = (tablerow.column1 * 1) + (tablerow.column2 * 2) 
end     

我在table1Controller中有一个方法,它有一个方法可以做某事。然后,此方法调用上面的table2#calculate方法并传递适当的参数。

当我调用calculate方法时,收到以下错误消息:

NoMethodError in table1Controller#dosomething
undefined method `*' for nil:NilClass

现在我知道calculate方法有些不对劲。但我不知道如何实现我想要实现的目标,这只是对2列的值进行计算并将总和保存到第三列。我的应用程序使用SQLite3。

1 个答案:

答案 0 :(得分:2)

undefined method * for nil:NilClass表示您尝试乘以的其中一个值为空。在您的示例中,tablerow.column3可能为零。我认为您的代码中有拼写错误或者示例代码错误,因为代码与您尝试实现的内容不符。

给它一个镜头,它也应该消除从控制器调用此操作的需要,并且每次在table2中保存或创建记录时只保存column3的值

class Table2 < ActiveRecord::Base
  before_save :calculate_column3

  def calculate_column3
   self.column3 = (self.column1 * 1) + (self.column2 * 2) 
  end
end