module Devise::Models::Rememberable
def self.required_fields(klass)
def self.required_fields(klass) [:remember_created_at] end
def forget_me!
If the record is persisted, remove the remember token (but only if
def forget_me! return unless persisted? self.remember_token = nil if respond_to?(:remember_token=) self.remember_created_at = nil save(:validate => false) end
def generate_remember_timestamp?(extend_period) #:nodoc:
exists, or if an existing remember token has expired.
Generate a timestamp if extend_remember_period is true, if no remember_token
def generate_remember_timestamp?(extend_period) #:nodoc: extend_period || remember_created_at.nil? || remember_expired? end
def generate_remember_token? #:nodoc:
def generate_remember_token? #:nodoc: respond_to?(:remember_token) && remember_expired? end
def remember_expired?
def remember_expired? remember_created_at.nil? || (remember_expires_at <= Time.now.utc) end
def remember_expires_at
def remember_expires_at remember_created_at + self.class.remember_for end
def remember_me!(extend_period=false)
Generate a new remember token and save the record without validations
def remember_me!(extend_period=false) self.remember_token = self.class.remember_token if generate_remember_token? self.remember_created_at = Time.now.utc if generate_remember_timestamp?(extend_period) save(:validate => false) end
def rememberable_options
def rememberable_options self.class.rememberable_options end
def rememberable_value
def rememberable_value if respond_to?(:remember_token) remember_token elsif respond_to?(:authenticatable_salt) && (salt = authenticatable_salt) salt else raise "authenticable_salt returned nil for the #{self.class.name} model. " \ "In order to use rememberable, you must ensure a password is always set " \ "or have a remember_token column in your model or implement your own " \ "rememberable_value in the model with custom logic." end end