我在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
保存模型,所以我尝试调用更新方法,但它不起作用。为什么呢?
答案 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)