module MongoModel::AttributeMethods::Nested
Private Instance Methods
assign_nested_attributes_for_association(association, attributes)
click to toggle source
# File lib/mongomodel/concerns/attribute_methods/nested.rb, line 73 def assign_nested_attributes_for_association(association, attributes) if obj = send(association) obj.attributes = attributes else send("build_#{association}", attributes) end end
assign_nested_attributes_for_association_collection(association, attributes_collection)
click to toggle source
# File lib/mongomodel/concerns/attribute_methods/nested.rb, line 81 def assign_nested_attributes_for_association_collection(association, attributes_collection) attributes_collection = convert_to_array(attributes_collection) options = self.nested_attributes_options[association] if options[:limit] && attributes_collection.size > options[:limit] raise TooManyDocuments, "Maximum #{options[:limit]} documents are allowed. Got #{attributes_collection.size} documents instead." end association = send(association) association.clear if options[:clear] attributes_collection.each do |attributes| association.build(attributes) end end
assign_nested_attributes_for_collection(property, attributes_collection)
click to toggle source
# File lib/mongomodel/concerns/attribute_methods/nested.rb, line 53 def assign_nested_attributes_for_collection(property, attributes_collection) attributes_collection = convert_to_array(attributes_collection) options = self.nested_attributes_options[property] if options[:limit] && attributes_collection.size > options[:limit] raise TooManyDocuments, "Maximum #{options[:limit]} documents are allowed. Got #{attributes_collection.size} documents instead." end collection = send(property) collection.clear if options[:clear] attributes_collection.each_with_index do |attributes, index| if collection[index] collection[index].attributes = attributes else collection[index] = attributes end end end
assign_nested_attributes_for_property(property, attributes)
click to toggle source
# File lib/mongomodel/concerns/attribute_methods/nested.rb, line 45 def assign_nested_attributes_for_property(property, attributes) if obj = send(property) obj.attributes = attributes else send("#{property}=", attributes) end end
convert_to_array(params)
click to toggle source
# File lib/mongomodel/concerns/attribute_methods/nested.rb, line 97 def convert_to_array(params) case params when Hash params.sort.map(&:last) else Array(params) end end