Class: LcpRuby::Services::Accessors::JsonField

Inherits:
Object
  • Object
show all
Defined in:
lib/lcp_ruby/services/accessors/json_field.rb

Class Method Summary collapse

Class Method Details

.get(record, options:) ⇒ Object



5
6
7
8
9
# File 'lib/lcp_ruby/services/accessors/json_field.rb', line 5

def self.get(record, options:)
  column = options["column"]
  key = options["key"]
  record.send(column)&.dig(key)
end

.set(record, value, options:) ⇒ Object



11
12
13
14
15
16
17
18
19
# File 'lib/lcp_ruby/services/accessors/json_field.rb', line 11

def self.set(record, value, options:)
  column = options["column"]
  key = options["key"]
  data = record.send(column) || {}
  # Mark column dirty before assignment to ensure JSON changes are persisted
  # even when AR's equality check considers the old and new hashes equivalent.
  record.send("#{column}_will_change!") unless record.send("#{column}_changed?")
  record.send("#{column}=", data.merge(key => value))
end