class WipeOut::Execution::ExecutePlan
Public Instance Methods
call()
click to toggle source
# File lib/wipe_out/execution/execute_plan.rb, line 11 def call execution.notify(:before_execution) process_relations plan.attributes.each(&method(:execute_on_attribute)) execution.run execution.notify(:after_execution) end
collection?(record, relation_name)
click to toggle source
# File lib/wipe_out/execution/execute_plan.rb, line 48 def collection?(record, relation_name) record.class.reflect_on_association(relation_name).collection? end
execute_on_attribute(attribute)
click to toggle source
# File lib/wipe_out/execution/execute_plan.rb, line 36 def execute_on_attribute(attribute) name, strategy = attribute value = strategy.call(record, name) record.send("#{name}=", value) end
execute_on_record(plan, record)
click to toggle source
# File lib/wipe_out/execution/execute_plan.rb, line 42 def execute_on_record(plan, record) execution_plan = plan.establish_execution_plan(record) ExecutePlan.call(execution.subexecution(execution_plan, record)) end
process_relations()
click to toggle source
# File lib/wipe_out/execution/execute_plan.rb, line 22 def process_relations plan.relations.each do |name, plan| relation = record.send(name) next unless relation.present? if collection?(record, name) relation.find_each { |record| execute_on_record(plan, record) } else execute_on_record(plan, relation) end end end