From 42cd60bcf7f66b3790729f4c42d5e1370b9e9c1c Mon Sep 17 00:00:00 2001 From: Kat Date: Wed, 8 Jun 2022 17:13:50 +0100 Subject: [PATCH] Refactor depends_on_met method to execcute methods on given objects Co-authored-by: baarkerlounger --- app/models/form.rb | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/app/models/form.rb b/app/models/form.rb index ae4b9661e..7149612ba 100644 --- a/app/models/form.rb +++ b/app/models/form.rb @@ -157,22 +157,26 @@ class Form depends_on.any? do |conditions_set| return false unless conditions_set - conditions_set.all? do |x| + conditions_set.all? do |condition| + object, method, value = condition.values_at("object", "method", "value") + object_instance = case object + when "case_log" + case_log + when "user" + nil + end - object = x["object"] - method = x["method"] - value = x["value"] if value.is_a?(Hash) && value.key?("operator") operator = value["operator"] operand = value["operand"] - case_log[method]&.send(operator, operand) + object_instance[method]&.send(operator, operand) else parts = method.split(".") - case_log_value = send_chain(parts, case_log) + object_instance_value = send_chain(parts, object_instance) - value.nil? ? case_log_value == value : !case_log_value.nil? && case_log_value == value - end + value.nil? ? object_instance_value == value : !object_instance_value.nil? && object_instance_value == value + end end end end