# File lib/active_record/mass_assignment_security/attribute_assignment.rb, line 48
      def assign_attributes(new_attributes, options = {})
        return if new_attributes.blank?

        attributes                  = new_attributes.stringify_keys
        multi_parameter_attributes  = []
        nested_parameter_attributes = []
        previous_options            = @mass_assignment_options
        @mass_assignment_options    = options

        unless options[:without_protection]
          attributes = sanitize_for_mass_assignment(attributes, mass_assignment_role)
        end

        attributes.each do |k, v|
          if k.include?("(")
            multi_parameter_attributes << [ k, v ]
          elsif 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?
        assign_multiparameter_attributes(multi_parameter_attributes) unless multi_parameter_attributes.empty?
      ensure
        @mass_assignment_options = previous_options
      end