class MagicPipe::Loaders::SimpleActiveRecord

Attributes

record[R]

Public Class Methods

load(decomposed_data) click to toggle source
# File lib/magic_pipe/loaders/simple_active_record.rb, line 21
def load(decomposed_data)
  input = symbolize_keys(decomposed_data)
  record_klass_name = input[:klass]
  record_id = input[:id]
  wrapper_klass_name = input[:wrapper]

  record_klass = load_constant!(record_klass_name, "ActiveRecord model")
  record = record_klass.find(record_id) # let it raise ActiveRecord::RecordNotFound

  if wrapper_klass_name
    wrapper_klass = load_constant!(wrapper_klass_name, "object serializer")
    wrapper_klass.new(record)
  else
    record
  end
end
new(record, wrapper=nil) click to toggle source
# File lib/magic_pipe/loaders/simple_active_record.rb, line 4
def initialize(record, wrapper=nil)
  @record = record
  @wrapper = wrapper
end

Private Class Methods

load_constant!(name, context) click to toggle source
# File lib/magic_pipe/loaders/simple_active_record.rb, line 40
def load_constant!(name, context)
  Object.const_get(name)
rescue NameError
  raise MagicPipe::LoaderError.new(name, context)
end
symbolize_keys(hash) click to toggle source
# File lib/magic_pipe/loaders/simple_active_record.rb, line 46
def symbolize_keys(hash)
  hash.map do |k, v|
    [k.to_sym, v]
  end.to_h
end

Public Instance Methods

decompose() click to toggle source
# File lib/magic_pipe/loaders/simple_active_record.rb, line 11
def decompose
  {
    klass: @record.class.to_s,
    id: @record.id,
    wrapper: (@wrapper && @wrapper.to_s),
  }
end