Method: ConcurrentPipeline::Store#update

Defined in:
lib/concurrent_pipeline/store.rb

#update(record, **attrs) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/concurrent_pipeline/store.rb', line 45

def update(record, **attrs)
  ensure_writable

  # Create a temporary record to apply and validate setter methods
  temp_record = record.class.new(record.attributes)

  # Apply attributes using setter methods (will raise NoMethodError if attribute doesn't exist)
  attrs.each do |key, value|
    temp_record.public_send("#{key}=", value)
  end

  storage.update(
    name: record.class.record_name,
    id: record.id,
    attrs: temp_record.attributes
  )

  nil
end