更新模型的某些属性

时间:2014-04-11 23:17:47

标签: ruby-on-rails

我在User模型中包含的模块中有以下代码:

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 :(得分: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)