2012-03-03 59 views
0

我有兩個表格:Usertable1table2User has_many table1User has_many table2table2有3列:column1,column2column3。我想要做的是將column1column2中的值乘以一個數字並將其保存到column3Rails arithematic operation Error

在我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

爲什麼一切都倍'如果你想在第一列和第二列上進行數學計算並將其保存爲3,那麼第三列是? – 2012-03-03 22:06:39

+0

你說得對。有一個錯字。對不起,關於 – AdiTheExplorer 2012-03-03 23:49:28

回答

2

undefined method * for nil:NilClass意味着您試圖乘法的值之一爲空。在你的例子中tablerow.column3可能是零。我認爲你在你的代碼中有一個錯字,或者給這個例子代碼錯誤,因爲代碼不符合你說的你試圖實現的內容。

給這一個鏡頭,也應該不再需要從您的控制器調用這個動作,只是保存的欄3每次值保存或表2中創造了紀錄

class Table2 < ActiveRecord::Base 
    before_save :calculate_column3 

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

糟糕。 Yup在代碼中有一個錯字。將嘗試你在mOrning中給出的代碼。感謝您的回覆。欣賞它。 :) – AdiTheExplorer 2012-03-03 23:48:13