我有两个表:User
,table1
和table2
。 User has_many table1
。 User has_many table2
。 table2
有3列:column1
,column2
,column3
。我想要做的是将column1
和column2
中的值乘以数字并将其保存到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。
答案 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