Module: Devise::Models::Trackable

Defined in:
lib/devise/models/trackable.rb

Overview

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

  • sign_in_count - Increased every time a sign in is made (by form, openid, oauth)

  • current_sign_in_at - A timestamp updated when the user signs in

  • last_sign_in_at - Holds the timestamp of the previous sign in

  • current_sign_in_ip - The remote ip updated when the user sign in

  • last_sign_in_ip - Holds the remote ip of the previous sign in

Class Method Summary (collapse)

Instance Method Summary (collapse)

Class Method Details

+ (Object) required_fields(klass)



14
15
16
# File 'lib/devise/models/trackable.rb', line 14

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

Instance Method Details

- (Object) update_tracked_fields(request)



18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/devise/models/trackable.rb', line 18

def update_tracked_fields(request)
  old_current, new_current = self., Time.now.utc
  self.     = old_current || new_current
  self.  = new_current

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

  self. ||= 0
  self. += 1
end

- (Object) update_tracked_fields!(request)



31
32
33
34
35
# File 'lib/devise/models/trackable.rb', line 31

def update_tracked_fields!(request)
  update_tracked_fields(request)
  save(validate: false) or raise "Devise trackable could not save #{inspect}." \
    "Please make sure a model using trackable can be saved at sign in."
end