Class: CascadeDeleter
- Inherits:
-
Object
- Object
- CascadeDeleter
- Defined in:
- lib/cascade_deleter.rb
Overview
Debug ################ gem cleanup cascade-deleter rm cascade-deleter-X.Y.Z.gem gem build cascade_deleter gem install cascade-deleter-X.Y.Z.gem ruby -Itest test/test_cascade_deleter.rb
Instance Method Summary collapse
- #delete_all(except: [], custom_joins: {}, method: :hard) ⇒ Object
-
#initialize(items) ⇒ CascadeDeleter
constructor
A new instance of CascadeDeleter.
Constructor Details
#initialize(items) ⇒ CascadeDeleter
Returns a new instance of CascadeDeleter.
26 27 28 29 30 |
# File 'lib/cascade_deleter.rb', line 26 def initialize(items) @items = items @class = @items.klass @classes = classes end |
Instance Method Details
#delete_all(except: [], custom_joins: {}, method: :hard) ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/cascade_deleter.rb', line 32 def delete_all(except: [], custom_joins: {}, method: :hard) @classes = @classes.without(*except) Deactivator.new(@classes).without_default_scopes do ActiveRecord::Base.connection.execute('SET FOREIGN_KEY_CHECKS = 0;') ActiveRecord::Base.transaction do @classes.map(&:constantize).each do |klass| delete(klass, build_join(klass, custom_joins), method) end end ensure ActiveRecord::Base.connection.execute('SET FOREIGN_KEY_CHECKS = 1;') end end |