# File lib/dm-rails/multiparameter_attributes.rb, line 97
      def merge_multiparameter_attributes(pairs)
        pairs = extract_multiparameter_attributes(pairs)

        errors = []
        attributes = {}
        pairs.each do |name, values_with_empty_parameters|
          # ActiveRecord keeps the empty values to set dates without a year.
          # Removing all nils (instead of removing only trailing nils) seems
          # like a weird behavior though.
          values = values_with_empty_parameters.compact

          if values.empty?
            attributes[name] = nil
            next
          end

          klass = properties[name].primitive
          begin
            attributes[name] =
              if klass == Time
                Time.local(*values)
              elsif klass == Date
                # Date does not replace nil values with defaults.
                Date.new(*values_with_empty_parameters.map { |v| v.nil? ? 1 : v })
              else
                klass.new(*values)
              end
          rescue => ex
            errors << MultiparameterAssignmentError.new(name, values, ex)
          end
        end

        unless errors.empty?
          raise MultiparameterAssignmentErrors.new(errors)
        end

        attributes
      end