What is last_sign_in_at used for in Devise?

last_sign_in_at is the date and time the user signed in before their current session, which is current_sign_in_at. It will be nil if they haven't signed in or this is their first session.

A better name might have been previous_sign_in_at because it is not the time they signed in last (the current one), it's the time before that.

It might be helpful to illustrate its use: After sign in, if updated_at on your Terms & Conditions page is newer than the user's last_sign_in_at then redirect them to a terms acceptance page.

As with most attributes in the Trackable module, it is not used internally to Devise although it is maintained by it.


Looking through the source code, it seems to just be an attribute of Trackable -- meant purely as a general convenience.

https://github.com/plataformatec/devise/search?utf8=%E2%9C%93&q=last_sign_in_at

Additionally, the gemfile for Devise does not show anything that (I am guessing) would make use of that field.

So, just general convenience.