Class: Quiver::Adapter::ActiveRecord::ARecLowLevelDeleter
- Inherits:
-
Object
- Object
- Quiver::Adapter::ActiveRecord::ARecLowLevelDeleter
- Defined in:
- lib/quiver/adapter/arec_low_level_deleter.rb
Instance Method Summary collapse
- #failed! ⇒ Object
-
#initialize(adapter_klass, original_attributes) ⇒ ARecLowLevelDeleter
constructor
A new instance of ARecLowLevelDeleter.
- #map(attributes, opts) ⇒ Object
- #map_array(h, opts) ⇒ Object
- #primary_key ⇒ Object
- #result ⇒ Object
- #success? ⇒ Boolean
Constructor Details
#initialize(adapter_klass, original_attributes) ⇒ ARecLowLevelDeleter
Returns a new instance of ARecLowLevelDeleter.
5 6 7 8 9 10 11 |
# File 'lib/quiver/adapter/arec_low_level_deleter.rb', line 5 def initialize(adapter_klass, original_attributes) self.adapter_klass = adapter_klass self.failed = false self.original_attributes = original_attributes self.attrs = {} self.calls = [] end |
Instance Method Details
#failed! ⇒ Object
52 53 54 |
# File 'lib/quiver/adapter/arec_low_level_deleter.rb', line 52 def failed! self.failed = true end |
#map(attributes, opts) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/quiver/adapter/arec_low_level_deleter.rb', line 13 def map(attributes, opts) record = record_class(opts[:to]) if opts[:foreign_key] record = record.where(opts[:foreign_key]) end if opts[:primary] record = record.where( adapter_klass.primary_key_name => primary_key ) end calls.unshift -> { record.delete_all == 1 } end |
#map_array(h, opts) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/quiver/adapter/arec_low_level_deleter.rb', line 31 def map_array(h, opts) raise ArgumentError, 'map_array requires opts[foreign_key] to be set' unless opts[:foreign_key] h.each do |key, items| record = record_class(opts[:to]) query = record.where(opts[:foreign_key]) remove_ids = record.pluck(:id) calls.unshift -> { query.where(id: remove_ids).delete_all == remove_ids.count } end end |
#primary_key ⇒ Object
60 61 62 |
# File 'lib/quiver/adapter/arec_low_level_deleter.rb', line 60 def primary_key original_attributes[adapter_klass.primary_key_name] end |
#result ⇒ Object
56 57 58 |
# File 'lib/quiver/adapter/arec_low_level_deleter.rb', line 56 def result {} end |
#success? ⇒ Boolean
46 47 48 49 50 |
# File 'lib/quiver/adapter/arec_low_level_deleter.rb', line 46 def success? calls.all? do |call| call.call end && !failed end |