Module: DatastaxRails::AttributeAssignment

Extended by:
ActiveSupport::Concern
Includes:
ActiveModel::ForbiddenAttributesProtection
Included in:
Base
Defined in:
lib/datastax_rails/attribute_assignment.rb

Overview

Model.new expects that a hash of attributes will be passed in and expects them to be set on the new instance. This module takes care of that while also delegating nested attribute assignment to the respective models.

Instance Method Summary collapse

Instance Method Details

#assign_attributes(new_attributes) ⇒ Object Also known as: attributes=

Allows you to set all the attributes by passing in a hash of attributes with keys matching the attribute names (which again matches the column names).

If the passed hash responds to permitted? method and the return value of this method is false an ActiveModel::ForbiddenAttributesError exception is raised. XXX: Is the above statement still true?


18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/datastax_rails/attribute_assignment.rb', line 18

def assign_attributes(new_attributes)
  return if new_attributes.blank?

  attributes = new_attributes.stringify_keys
  nested_parameter_attributes = []

  attributes = sanitize_for_mass_assignment(attributes)

  attributes.each do |k, v|
    if v.is_a?(Hash)
      nested_parameter_attributes << [k, v]
    else
      _assign_attribute(k, v)
    end
  end

  assign_nested_parameter_attributes(nested_parameter_attributes) unless nested_parameter_attributes.empty?
end