Sha256: e1833d7ac3a7316c82ee3571cb769f530d0b053bde3dc226b7fd720e4ac8d9f7

Contents?: true

Size: 781 Bytes

Versions: 2

Compression:

Stored size: 781 Bytes

Contents

require 'devise/orm/active_record'

module ActiveDisablable
  
  def self.included(base)
    base.extend(ClassMethods)
    base.send(:default_scope) { base.where(:enabled => true) }
  end
  
  module ClassMethods
    def all_include_disabled
      unscoped
    end
    
    def all_disabled
      where(:enabled => false)
    end
    
  end
  
  
  
  def disable
    self.enabled = false
  end
  
  def enable
    self.enabled = true
  end
  
  def enabled?
    self.enabled
  end
  
  def disabled?
    !self.enabled
  end  
  
  def destroy
    if (@destroy_fully || self.disabled?)
      super
    else
      disable
      self.save
    end
  end
  
  def recovery
    enable
    self.save
  end
  
  def destroy_fully
    @destroy_fully = true
    self.destroy
  end
    
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
guara-0.0.3 lib/active_extend/active_disablable.rb
guara-0.0.1.rc lib/active_extend/active_disablable.rb