class ActiveRecord::Base

Public Class Methods

act_as_disabled(options = {}) click to toggle source
# File lib/act_as_disabled.rb, line 84
def self.act_as_disabled(options = {})
  define_model_callbacks :disable

  class_attribute :aad_config
  self.aad_config = {
      column: "disabled",
      column_type: "boolean",
      without_default_scope: false
  }
  if options[:column_type] == "string"
    aad_config.merge!(deleted_value: "deleted")
  end
  aad_config.merge!(allow_nulls: false) if options[:column_type] == "boolean"
  aad_config.merge!(options) #merge user

  unless %w[boolean string].include? aad_config[:column_type]
    raise ArgumentError, "'time', 'boolean' or 'string' expected" \
    " for :column_type option, got #{aad_config[:column_type]}"
  end

  include ActAsDisabled

  unless aad_config[:without_default_scope]
    default_scope { aad_default_scope }
  end

  # before_disable { self.class.notify_observers(:before_disable, self) if self.class.respond_to?(:notify_observers) }
  #
  # after_disable { self.class.notify_observers(:after_disable, self) if self.class.respond_to?(:notify_observers) }
end