Class: DelayHenka::ApplyChangesWorker

Inherits:
Object
  • Object
show all
Includes:
Sidekiq::Worker
Defined in:
app/workers/delay_henka/apply_changes_worker.rb

Instance Method Summary collapse

Instance Method Details

#performObject



6
7
8
9
10
11
12
13
14
15
16
17
# File 'app/workers/delay_henka/apply_changes_worker.rb', line 6

def perform
  ScheduledChange.staged
    .where('schedule_at <= ?', Time.current)
    .includes(:changeable)
    .group_by{ |change| [change.changeable_type, change.changeable_id, change.attribute_name] }
    .values
    .each do |changes_for_attribute|
      latest_change = changes_for_attribute.sort_by(&:created_at).last
      (changes_for_attribute - [latest_change]).each(&:replace_change)
      latest_change.apply_change
    end
end