Class: ArchiveHook::ScopeArchiver

Inherits:
Object
  • Object
show all
Defined in:
lib/archive_hook.rb

Instance Method Summary collapse

Constructor Details

#initialize(dependencies: {}) ⇒ ScopeArchiver

Returns a new instance of ScopeArchiver.



5
6
7
# File 'lib/archive_hook.rb', line 5

def initialize(dependencies: {})
  @dependencies = dependencies
end

Instance Method Details

#call(scope) ⇒ Object



9
10
11
12
13
14
15
16
17
18
# File 'lib/archive_hook.rb', line 9

def call(scope)
  parent = scope.model
  parent_id_groups = scope.in_batches.map { |relation| relation.pluck(:id) }
  return if parent_id_groups.empty?

  archive_children(parent, parent_id_groups)
  parent_id_groups.each do |parent_ids|
    archive_by_scope(parent.unscoped.where(id: parent_ids))
  end
end