module Devise::Models::Trackable

Track information about your user sign in. It tracks the following columns:

Public Class Methods

required_fields(klass) click to toggle source
# File lib/devise/models/trackable.rb, line 15
def self.required_fields(klass)
  [:current_sign_in_at, :current_sign_in_ip, :last_sign_in_at, :last_sign_in_ip, :sign_in_count]
end

Public Instance Methods

update_tracked_fields(request) click to toggle source
# File lib/devise/models/trackable.rb, line 19
def update_tracked_fields(request)
  old_current, new_current = self.current_sign_in_at, Time.now.utc
  self.last_sign_in_at     = old_current || new_current
  self.current_sign_in_at  = new_current

  old_current, new_current = self.current_sign_in_ip, request.remote_ip
  self.last_sign_in_ip     = old_current || new_current
  self.current_sign_in_ip  = new_current

  self.sign_in_count ||= 0
  self.sign_in_count += 1
end
update_tracked_fields!(request) click to toggle source
# File lib/devise/models/trackable.rb, line 32
def update_tracked_fields!(request)
  # We have to check if the user is already persisted before running
  # `save` here because invalid users can be saved if we don't.
  # See https://github.com/plataformatec/devise/issues/4673 for more details.
  return if new_record?

  update_tracked_fields(request)
  save(validate: false)
end