Method: Marty::BaseRuleView#jsonb_simple_setter

Defined in:
app/components/marty/base_rule_view.rb

#jsonb_simple_setter(c) ⇒ Object



148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
# File 'app/components/marty/base_rule_view.rb', line 148

def jsonb_simple_setter(c)
  msg = "#{c}="
  lambda { |r, v|
    return r.send(msg, nil) if v.blank?

    begin
      final = Marty::BaseRuleView.ruletext_to_hash(v)
    rescue StandardError => e
      final = { "~~ERROR~~": e.message }
    end

    # ActiveRecord ignores change in json key order
    r.send("#{c}_will_change!") if r[c.to_s].to_a != final.to_a

    r.send(msg, final)
  }
end