【发布时间】:2012-02-27 04:49:51
【问题描述】:
我想跟踪我的用户的 last_login DateTime,而不更改 updated_at 属性。
所以在我的模型属性中我放了:
def login!(session)
session[:user_id] = id
User.record_timestamp = false
self.touch(:last_login_at)
User.record_timestamp = true
end
也试过了,还是一样的:
def login!(session)
session[:user_id] = id
self.last_login_at = Time.now
User.record_timestamps = false
self.save(:validate => false)
User.record_timestamps = true
end
但每次登录后仍会更新 update_at 列。 直接从模型调用时,似乎 User.record_timestamps = false 没有任何效果。 (我习惯从控制器调用此方法或 rake 任务没有任何问题)
请不要告诉我使用 update_attribute :last_login_at, Time.now 在 Rails 3.1 中没有设置 updated_at 列:我使用的是 rails 3.0.9!
有什么想法吗? 从模型而不是从任何控制器进行更新对我来说真的更干...
--------
[edit] Hummmmmm 似乎是 rails 中的一个错误:我有一个嵌套的 Class SubUser
1) 我打电话给@user.login!有一个真正的类用户(User.first.login!)
2) 即使我调用的是 SubUser.first.login!命令 User.record_timestamps 应该也会影响 SubUser 类,对吧?
【问题讨论】:
标签: ruby-on-rails-3 auto-update