2014-04-11 134 views
0

我有一個模塊中包含的用戶模型下面的代碼:更新模型的某些屬性

module Authentication 
    extend ActiveSupport::Concern 

    def track_on_login_and_save(request) 

    # does NOT work 
    update(
     last_login_at: Time.zone.now, 
     last_login_ip: request.remote_ip, 
     login_count: login_count + 1 
    ) 

    # WORKS 
    self.last_login_at = Time.zone.now 
    self.last_login_ip = request.remote_ip 
    self.login_count += 1 
    save(validate: false) 
    end 
end 

我想不保存與validations: false模型,所以我試着撥打更新方法,但它不起作用。爲什麼?

+1

你是什麼意思的「不工作」?你有錯誤嗎?意想不到的結果?另外,你是否在意回調? –

+0

查看本頁右側的所有內容...... http://apidock.com/rails/v4.0.2/ActiveRecord/Persistence/update –

回答

1

由於update調用驗證,可能問題是您正在調用驗證請求。你有沒有試過這個:

update_attribute(last_login_at, Time.zone.now) 
update_attribute(last_login_ip, request.remote_ip) 
update_attribute(login_count, login_count + 1) 
+1

驗證虛擬共享密碼的確存在問題。如果: - >(m){m.password.present? }解決了這個問題(並且導致了密碼重置表單上的另一個問題,我使用password_resets控制器中的短代碼來檢查密碼是否存在)。 – maprihoda