Module: MySoftDelete::Deleteable::ClassMethods

Defined in:
lib/my_soft_delete/deleteable.rb

Instance Method Summary collapse

Instance Method Details

#acts_as_soft_delete(default_column_name = :deleted_at) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/my_soft_delete/deleteable.rb', line 9

def acts_as_soft_delete(default_column_name=:deleted_at)
  cattr_accessor :default_column_name
  default_column_name =default_column_name
  default_scope  { where(default_column_name => nil) }
  define_method "destroy" do |opts={}|
    opts[:force] && super() || mark_soft_delete(Time.now)
  end
  define_method "mark_soft_delete" do |v|
    (_ = self).send("#{default_column_name}=", v); _.save(validate: false) 
  end
  class_eval do 
    define_method "self.reviev_by_id" do |id|
      self.class.unscoped.find(id).mark_soft_delete(nil)
    end
  end

end