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