2015-12-21 31 views
0

我有一個用戶表是這樣的:基於同一行護欄另一列如何編寫方法自動更新一列

----------------------------------------------- 
| name | email | role | card_amount (integer) | 
----------------------------------------------- 
| ... | ... | ... | ...     | 
----------------------------------------------- 

我想更新基礎上,card_amount列自動作用柱與特定的條件如下圖所示:

if @user.card_amount >= 100 

則角色列將自動更新,如:

@user.role = "buyer" 

如何使它自動發生?所以每當@ user.card_amount> = 100時,角色colum將具有「買方」的價值。

或者當我進入rails控制檯並將card_amount更新爲100時,角色列也將更新爲「買方」?

回答

2

您應該使用before_save回調。例如

before_save :update_role 

def update_role 
    if self.card_amount >= 100 
    self.role = "buyer" 
    end 
end 

閱讀:http://guides.rubyonrails.org/active_record_callbacks.html

+0

謝謝你,並在那裏把這個代碼放到? application_controller或user_controller或用戶模型? –

+1

把它放在用戶模型:) –

+0

@HarryBomrah它的作品像魔術,謝謝你! :)) –