Method: Rubyists::Linear::BaseModel::ClassMethods#many_setter!

Defined in:
lib/linear/models/base_model/class_methods.rb

#many_setter!(relation, klass) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/linear/models/base_model/class_methods.rb', line 34

def many_setter!(relation, klass)
  define_method "#{relation}=" do |val|
    vals = if val&.key?(:nodes)
             val[:nodes]
           else
             Array(val)
           end
    updated_data[relation] = vals.map { |v| v.is_a?(Hash) ? v : v.updated_data }
    new_relations = vals.map { |v| v.is_a?(Hash) ? Rubyists::Linear.const_get(klass).new(v) : v }
    instance_variable_set("@#{relation}", new_relations)
  end
end