2 changed files with 31 additions and 26 deletions
@ -0,0 +1,27 @@
|
||||
module DerivedVariables::SharedLogic |
||||
private |
||||
|
||||
def reset_invalidated_derived_values!(dependencies) |
||||
dependencies.each do |dependency| |
||||
any_conditions_changed = dependency[:conditions].any? { |attribute, _value| send("#{attribute}_changed?") } |
||||
next unless any_conditions_changed |
||||
|
||||
previously_in_derived_state = dependency[:conditions].all? { |attribute, value| send("#{attribute}_was") == value } |
||||
next unless previously_in_derived_state |
||||
|
||||
dependency[:derived_values].each do |derived_attribute, _derived_value| |
||||
Rails.logger.debug("Cleared derived #{derived_attribute} value") |
||||
send("#{derived_attribute}=", nil) |
||||
end |
||||
end |
||||
end |
||||
|
||||
def set_encoded_derived_values!(dependencies) |
||||
dependencies.each do |dependency| |
||||
derivation_applies = dependency[:conditions].all? { |attribute, value| send(attribute) == value } |
||||
if derivation_applies |
||||
dependency[:derived_values].each { |attribute, value| send("#{attribute}=", value) } |
||||
end |
||||
end |
||||
end |
||||
end |
||||
Loading…
Reference in new issue