Я хочу отслеживать дату последнего времени моего пользователя без изменения атрибута 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 не имеет никакого эффекта при вызове из модели напрямую. (Я использую для вызова этого метода из задач контроллера или граблей без проблем)
пожалуйста, не говорите мне использовать update_attribute: last_login_at, Time.now, который в Rails 3.1 не устанавливает столбец updated_at: я использую rails 3.0.9!
Есть идеи?
Это действительно более СУХОЙ для меня, чтобы сделать это обновление от модели, а не от любого контроллера ...
--------------------
[править] Hummmmmm похоже на ошибку в рельсах: у меня есть вложенный Class SubUser
1) Я звоню @ user.login! с реальным пользователем класса (User.first.login!)
2) даже если бы я звонил SubUser.first.login! команда User.record_timestamps тоже должна влиять на класс SubUser, верно?