module Kakurenbo::MixinARBase::ClassMethods
Public Instance Methods
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