2011-05-27 65 views
0

在我的控制器中,一大堆數字被壓縮了。百分比乘以100,因此可以將它們存儲爲整數。Rails 3應用程序在保存時拋出「undefined method`update_attributes'」

tot = @mot[1] + @mot[2] + @mot[3] 
exec_pct = @mot[3]/tot * 100 
tact_pct = @mot[2]/tot * 100 
strat_pct = @mot[1]/tot * 100 

隨後這些值都應該被寫入用戶記錄如下:

@user = User.where(id = current_user.id) 
@user.update_attributes(:strat_pct => strat_pct.to_i, :tact_pct => tact_pct.to_i, :exec_pct => exec_pct.to_i) 

我收到以下錯誤消息:

undefined method `update_attributes' 

感謝您的幫助。

+0

在一個側面說明,我建議你從你的控制器中刪除這些操作,並把它們的回調方法裏面的用戶模型。 (比如before_save) – 2011-05-27 20:24:12

回答

6

你的問題就在這裏:

@user = User.where(id = current_user.id) 

在上面,你正在做一個賦值給變量id來current_user.id的值,它是不是你在這種情況下意向。

如果你這樣做:

p @user.class 

然後,它會返回nilClass。

您需要用:

@user = User.find(current_user.id) 

或者:

@user = User.where(:id => current_user.id) 

雖然基於你的代碼,CURRENT_USER可能是用戶的一個實例。我會說你不需要做任何額外的電話,你應該能夠做到:

current_user.update_attributes(:strat_pct => strat_pct.to_i, :tact_pct => tact_pct.to_i, :exec_pct => exec_pct.to_i) 
相關問題