Module: Nexo::Synchronizable::ClassMethods

Defined in:
app/models/concerns/nexo/synchronizable.rb

Instance Method Summary collapse

Instance Method Details

#create_from_payload!(folder, payload) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
# File 'app/models/concerns/nexo/synchronizable.rb', line 43

def create_from_payload!(folder, payload)
  Nexo.logger.debug("Synchronizable#create_from_payload!")
  service = Nexo::ServiceBuilder.instance.build_protocol_service(folder)
  fields = service.fields_from_payload(payload)

  synchronizable = new
  attributes = synchronizable.translate_fields(fields, for_create: true, folder:)
  synchronizable.assign_attributes(attributes)
  synchronizable.save!

  synchronizable
end

#define_protocol(name, methods) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'app/models/concerns/nexo/synchronizable.rb', line 21

def define_protocol(name, methods)
  define_method(:protocols) do
    if defined? super
      # :nocov: TODO, not yet implemented
      super << name
      # :nocov:
    else
      [ name ]
    end
  end

  define_method(:protocol_methods) do
    if defined? super
      [ super(), methods ].flatten
    else
      # :nocov: borderline
      raise "protocol_methods should be defined"
      # :nocov:
    end
  end
end