lib/active_archive/base.rb in active_archive-4.0.2 vs lib/active_archive/base.rb in active_archive-4.0.3
- old
+ new
@@ -34,11 +34,11 @@
end
def unarchive(opts = nil)
with_transaction_returning_status do
records = should_unarchive_parent_first?(opts) ? unarchival.reverse : unarchival
- records.each { |record| record.call(opts) }
+ records.each { |rec| rec.call(opts) }
self
end
end
@@ -73,12 +73,12 @@
# rubocop:disable Metrics/AbcSize
def retrieve_dependent_records
dependent_records = {}
- self.class.reflections.each do |key, reflection|
- next unless reflection.options[:dependent] == :destroy
+ self.class.reflections.each do |key, ref|
+ next unless ref.options[:dependent] == :destroy
records = send(key)
next unless records
records.respond_to?(:empty?) ? (next if records.empty?) : (records = [] << records)
@@ -118,27 +118,30 @@
end
end
]
end
+ # rubocop:disable Metrics/LineLength
def dependent_records_for_unarchival(name, reflection)
record = send(name)
case reflection.macro.to_s.gsub('has_', '').to_sym
when :many
- records = archived_at ? set_record_window(record, name, reflection) : record
+ records = archived_at ? set_record_window(record, name, reflection) : record.unscope(where: :archived_at)
when :one, :belongs_to
self.class.unscoped { records = [] << record }
end
[records].flatten.compact
end
+ # rubocop:enable Metrics/LineLength
def unarchive_destroyed_dependent_records(force = nil)
self.class.reflections
.select { |_, ref| 'destroy' == ref.options[:dependent].to_s && ref.klass.archivable? }
.each do |name, ref|
- dependent_records_for_unarchival(name, ref).each { |record| record.unarchive(force) }
+ dependent_records_for_unarchival(name, ref).each { |rec| rec.try(:unarchive, force) }
+ reload
end
end
def set_archived_at(value, force = nil)
return self unless archivable?