Module: ActiveData::Model::NestedAttributes

Extended by:
ActiveSupport::Concern
Defined in:
lib/active_data/model/nested_attributes.rb

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#assign_nested_attributes_for_collection_association(association_name, attributes_collection, assignment_opts = {}) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/active_data/model/nested_attributes.rb', line 30

def assign_nested_attributes_for_collection_association(association_name, attributes_collection, assignment_opts = {})
  unless attributes_collection.is_a?(Hash) || attributes_collection.is_a?(Array)
    raise ArgumentError, "Hash or Array expected, got #{attributes_collection.class.name} (#{attributes_collection.inspect})"
  end

  if attributes_collection.is_a? Hash
    keys = attributes_collection.keys
    attributes_collection = if keys.include?('id') || keys.include?(:id)
      Array.wrap(attributes_collection)
    else
      attributes_collection.values
    end
  end

  reflection = self.class.reflect_on_association association_name

  send "#{association_name}=", attributes_collection
end

#assign_nested_attributes_for_one_to_one_association(association_name, attributes, assignment_opts = {}) ⇒ Object



49
50
51
52
53
54
55
# File 'lib/active_data/model/nested_attributes.rb', line 49

def assign_nested_attributes_for_one_to_one_association(association_name, attributes, assignment_opts = {})
  unless attributes.is_a?(Hash)
    raise ArgumentError, "Hash expected, got #{attributes.class.name} (#{attributes.inspect})"
  end

  send "#{association_name}=", attributes
end