15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
# File 'lib/active_set/filtering/operation.rb', line 15
def execute
attribute_instructions = flatten_keys_of(@instructions_hash)
.map { |k, v| AttributeInstruction.new(k, v) }
activerecord_filtered_set = attribute_instructions.reduce(@set) do |set, attribute_instruction|
maybe_set_or_false = ActiveRecord::Strategy.new(set, attribute_instruction).execute
next set unless maybe_set_or_false
attribute_instruction.processed = true
maybe_set_or_false
end
return activerecord_filtered_set if attribute_instructions.all?(&:processed?)
attribute_instructions.reject(&:processed?).reduce(activerecord_filtered_set) do |set, attribute_instruction|
maybe_set_or_false = Enumerable::Strategy.new(set, attribute_instruction).execute
next set unless maybe_set_or_false
attribute_instruction.processed = true
maybe_set_or_false
end
end
|