module Kakurenbo::MixinARBase::ClassMethods

Public Instance Methods

acts_as_paranoid(options = {})
inherited(child_class) click to toggle source

Initialize Kakurenbo in child class.

Calls superclass method
# File lib/kakurenbo/mixin_ar_base.rb, line 12
def inherited(child_class)
  super

  child_class.define_singleton_method :table_name= do |value|
    super(value)
    if has_kakurenbo_column?
      remodel_as_soft_delete
    else
      remodel_as_original
    end
  end

  child_class.instance_eval do
    remodel_as_soft_delete if has_kakurenbo_column?

    # Reset @table name, because ActiveRecord doesn't expect initialized at here.
    remove_instance_variable(:@table_name) if instance_variable_defined? :@table_name
  end
end
paranoid?() click to toggle source

Will be override this method, if class is soft_delete.

# File lib/kakurenbo/mixin_ar_base.rb, line 67
def paranoid?
  false
end
remodel_as_original() click to toggle source

Remodel Model as normal. @note Restore to original model.

# File lib/kakurenbo/mixin_ar_base.rb, line 34
def remodel_as_original
  if paranoid?
    alias_method :delete,   :hard_delete
    alias_method :destroy,  :hard_destroy
    alias_method :destroy!, :hard_destroy!

    define_singleton_method(:paranoid?) { false }
  end
end
remodel_as_soft_delete(options = {}) click to toggle source

Remodel Model as soft-delete.

@params option [Hash] option. @option option [Symbol] column column of kakurenbo.

# File lib/kakurenbo/mixin_ar_base.rb, line 48
def remodel_as_soft_delete(options = {})
  options.reverse_merge!(
    :column => :deleted_at
  )

  unless paranoid?
    alias_method :hard_delete,   :delete
    alias_method :hard_destroy,  :destroy
    alias_method :hard_destroy!, :destroy!

    class_attribute :kakurenbo_column
    include Kakurenbo::Core
  end

  self.kakurenbo_column = options[:column]
end
Also aliased as: acts_as_paranoid

Private Instance Methods

has_kakurenbo_column?() click to toggle source

Check if Model has kakurenbo_column.

@return [Boolean] result.

# File lib/kakurenbo/mixin_ar_base.rb, line 75
def has_kakurenbo_column?
  begin
    table_exists? and column_names.include?('deleted_at')
  rescue
    false
  end
end