Собирая это вместе, я делаю следующее.
- У пользователя есть поле last_seen_on (я использую Date вместо DateTime)
- Создать метод для обновления last_seen_on
- Позвоните, когда войдете в систему
Мой метод обновления выглядит следующим образом
def update_last_seen_on
if self.last_seen_on != Date.today
self.update_column(:last_seen_on,Date.today)
end
end
Это гарантирует, что
- база данных вызывается только при изменении
- на пользовательской модели не выполняются обратные вызовы
- обновляется при не изменяется
Если вы используете Devise, вы можете легко вызвать это, добавив следующее в инициализатор Devise
#config/initializers/devise.rb
Warden::Manager.after_set_user do |user,auth,opts|
user.update_last_seen_on
end