Module: Kakurenbo::MixinARBase::ClassMethods

Defined in:
lib/kakurenbo/mixin_ar_base.rb

Instance Method Summary collapse

Instance Method Details

#inherited(child_class) ⇒ Object

Initialize Kakurenbo in child class.



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 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?Boolean

Will be override this method, if class is soft_delete.

Returns:

  • (Boolean)


67
68
69
# File 'lib/kakurenbo/mixin_ar_base.rb', line 67

def paranoid?
  false
end

#remodel_as_originalObject

Note:

Restore to original model.

Remodel Model as normal.



34
35
36
37
38
39
40
41
42
# 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 = {}) ⇒ Object Also known as: acts_as_paranoid

Remodel Model as soft-delete.

Parameters:

  • option (Hash)

    a customizable set of options



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# 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