# File lib/quiver/adapter/arec_low_level_deleter.rb, line 60 def primary_key original_attributes[adapter_klass.primary_key_name] end
class Quiver::Adapter::ActiveRecord::ARecLowLevelDeleter
Attributes
adapter_klass[RW]
attrs[RW]
calls[RW]
failed[RW]
mapper_klass[RW]
original_attributes[RW]
Public Class Methods
new(adapter_klass, original_attributes)
click to toggle source
# 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
Public Instance Methods
failed!()
click to toggle source
# File lib/quiver/adapter/arec_low_level_deleter.rb, line 52 def failed! self.failed = true end
map(attributes, opts)
click to toggle source
# 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)
click to toggle source
# 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()
click to toggle source
result()
click to toggle source
# File lib/quiver/adapter/arec_low_level_deleter.rb, line 56 def result {} end
success?()
click to toggle source
# File lib/quiver/adapter/arec_low_level_deleter.rb, line 46 def success? calls.all? do |call| call.call end && !failed end
Private Instance Methods
record_class(name)
click to toggle source
# File lib/quiver/adapter/arec_low_level_deleter.rb, line 68 def record_class(name) adapter_klass.record_classes[name] end