Module: SoftDelete::SoftDeletable
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/soft_delete/soft_deletable.rb
Overview
TODO: wrap in a transaction
Constant Summary collapse
- @@soft_delete_dependency_behavior =
nil- @@include_default_scope =
true
Class Method Summary collapse
-
.dependent(behavior = :ignore) ⇒ Object
descibes how soft delete should handle dependencies ignore ignore dependencies and do nothing.
- .not_scoped ⇒ Object
Instance Method Summary collapse
Class Method Details
.dependent(behavior = :ignore) ⇒ Object
descibes how soft delete should handle dependencies ignore ignore dependencies and do nothing. this is the default behavior default fire off the same action that is described by ar dsl soft_delete if dsl is :destroy, then override with a soft_delete
31 32 33 34 35 36 |
# File 'lib/soft_delete/soft_deletable.rb', line 31 def self.dependent(behavior = :ignore) raise ArgumentError unless i[ignore default soft_delete].include? behavior @@soft_delete_dependency_behavior = behavior self end |
.not_scoped ⇒ Object
18 19 20 21 22 |
# File 'lib/soft_delete/soft_deletable.rb', line 18 def self.not_scoped @@include_default_scope = false self end |
Instance Method Details
#soft_delete(validate: true) ⇒ Object
38 39 40 41 42 |
# File 'lib/soft_delete/soft_deletable.rb', line 38 def soft_delete(validate: true) soft_delete!(validate: validate) rescue ActiveRecord::RecordInvalid false end |
#soft_delete!(validate: true) ⇒ Object
44 45 46 47 48 49 50 51 52 |
# File 'lib/soft_delete/soft_deletable.rb', line 44 def soft_delete!(validate: true) ActiveRecord::Base.transaction do handle_soft_delete_dependency_behavior run_callbacks(:destroy) do self.deleted_at = Time.now save!(validate: validate) end end end |