0
我有一個用戶模型,我正在寫一個方法來更新電子郵件身份驗證令牌。當我嘗試用用戶對象調用該方法時,它會引發驗證錯誤,即提交的密碼爲空。用戶對象已經保存並且已經找到並且從控制器調用了gen_token方法(例如:user.gen_token)。我的代碼部分如下所示:爲什麼.save在未更新的屬性上調用模型驗證?
#controller
user.gen_token
#User model
validates :password, presence: true
def gen_token
self[:email_token]=SecureRandom.urlsafe_base64
save!
end
我的問題是,當我只更新用戶模型的email_token屬性爲什麼密碼驗證提高嗎?
的錯誤如下: 的ActiveRecord :: RecordInvalid 驗證失敗:密碼不能爲空,確認密碼不能爲空
我也意識到,如果我刪除保存!代碼工作正如我所希望的那樣,它會更新email_token。現在我想知道在模型中是否需要調用save或update_attribute,因爲您可以通過執行self [attribute] = new_value來更改屬性。
,你能告訴我們的錯誤? – Anthony 2014-12-13 11:59:03
已更新。請看我的錯誤。我感謝任何幫助。 – 2014-12-13 13:44:34