module Devise::Models::Stalkable

Public Instance Methods

mark_last_seen!(login_record_id) click to toggle source

Marks the time when the user was last seen in the system on a given login record ID.

@param [Fixnum, String] login_record_id ID of login record.

# File lib/devise/models/stalkable.rb, line 22
def mark_last_seen!(login_record_id)
  login_record = login_class.find(login_record_id)
  login_record.update_column :last_seen_at, Time.now
end
mark_login!(request) click to toggle source

Creates a new login record based on information in provided request object. Marks the last seen time as well.

@param [ActionDispatch::Request] request HTTP request which was used to login @return [UserLogin]

# File lib/devise/models/stalkable.rb, line 14
def mark_login!(request)
  login_class.create(attrs_for_login(request))
end
mark_logout!(login_record_id) click to toggle source

Marks the time when user has logged out on given login record ID. Marks the last seen time as well.

@param [Fixnum, String] login_record_id ID of login record.

# File lib/devise/models/stalkable.rb, line 31
def mark_logout!(login_record_id)
  login_record = login_class.find(login_record_id)
  t = Time.now
  login_record.update_column :last_seen_at, t
  login_record.update_column :signed_out_at, t
end

Protected Instance Methods

attrs_for_login(request) click to toggle source
# File lib/devise/models/stalkable.rb, line 40
def attrs_for_login(request)
  t = Time.now
  { user_id: id, ip_address: request.remote_ip,
    user_agent: request.user_agent,
    signed_in_at: t,
    last_seen_at: t }
end
login_class() click to toggle source
# File lib/devise/models/stalkable.rb, line 48
def login_class
  "#{self.class.name}Login".safe_constantize
end