module Devise::Models::Suspendable
Suspendable
Module, responsible for manual deactivation of a user account.
Examples:
User.find(1).suspend!('Left the company')
Public Class Methods
included(base)
click to toggle source
# File lib/devise_suspendable/model.rb, line 10 def self.included(base) base.class_eval do validates_length_of :suspension_reason, :maximum => 250 # basic sanitization before_validation do |acc| acc.suspension_reason.strip! if acc.suspension_reason acc.suspension_reason = nil if acc.suspension_reason.blank? acc.suspension_reason = nil if acc.suspended_at.blank? end end end
Public Instance Methods
active?()
click to toggle source
override Activatable
Calls superclass method
# File lib/devise_suspendable/model.rb, line 42 def active? super && !suspended? end
inactive_message()
click to toggle source
Overwrites invalid_message from Devise::Models::Authenticatable to define the correct reason for blocking the sign in.
Calls superclass method
# File lib/devise_suspendable/model.rb, line 48 def inactive_message suspended? ? :suspended : super end
suspend!(reason = nil)
click to toggle source
# File lib/devise_suspendable/model.rb, line 27 def suspend!(reason = nil) return if suspended? self.suspended_at = Time.zone.now self.suspension_reason = reason self.save(:validate => false) end
suspended?()
click to toggle source
# File lib/devise_suspendable/model.rb, line 23 def suspended? self.suspended_at? end
unsuspend!()
click to toggle source
# File lib/devise_suspendable/model.rb, line 34 def unsuspend! return if !suspended? self.suspended_at = nil self.suspension_reason = nil self.save(:validate => false) if self.changed? end