Renamed #values_sql_for_column_names_and_attributes to #values_sql_for_columns_and_attributes and cleaned up how it dealt with columns.
* added back in the support for type-casting based on the database column * removed unused method in ActiveRecord::Import::AbstractAdapter https://github.com/zdennis/activerecord-import/issues#issue/5
This commit is contained in:
parent
1a8082444b
commit
161cf017f9
|
@ -116,17 +116,6 @@ module ActiveRecord::Import::AbstractAdapter
|
||||||
post_sql_statements
|
post_sql_statements
|
||||||
end
|
end
|
||||||
|
|
||||||
# Returns SQL the VALUES for an INSERT statement given the passed in +columns+
|
|
||||||
# and +array_of_attributes+.
|
|
||||||
def values_sql_for_column_names_and_attributes( columns, array_of_attributes ) # :nodoc:
|
|
||||||
array_of_attributes.map do |arr|
|
|
||||||
my_values = arr.each_with_index.map do |val,j|
|
|
||||||
quote( columns[j].type_cast(val), columns[j] )
|
|
||||||
end
|
|
||||||
"(#{my_values.join(',')})"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
# Returns the maximum number of bytes that the server will allow
|
# Returns the maximum number of bytes that the server will allow
|
||||||
# in a single packet
|
# in a single packet
|
||||||
def max_allowed_packet
|
def max_allowed_packet
|
||||||
|
|
|
@ -259,7 +259,7 @@ class ActiveRecord::Base
|
||||||
|
|
||||||
columns_sql = "(#{column_names.map{|name| connection.quote_column_name(name) }.join(',')})"
|
columns_sql = "(#{column_names.map{|name| connection.quote_column_name(name) }.join(',')})"
|
||||||
insert_sql = "INSERT #{options[:ignore] ? 'IGNORE ':''}INTO #{quoted_table_name} #{columns_sql} VALUES "
|
insert_sql = "INSERT #{options[:ignore] ? 'IGNORE ':''}INTO #{quoted_table_name} #{columns_sql} VALUES "
|
||||||
values_sql = values_sql_for_column_names_and_attributes(column_names, array_of_attributes)
|
values_sql = values_sql_for_columns_and_attributes(columns, array_of_attributes)
|
||||||
if not supports_import?
|
if not supports_import?
|
||||||
number_inserted = 0
|
number_inserted = 0
|
||||||
values_sql.each do |values|
|
values_sql.each do |values|
|
||||||
|
@ -282,15 +282,14 @@ class ActiveRecord::Base
|
||||||
|
|
||||||
# Returns SQL the VALUES for an INSERT statement given the passed in +columns+
|
# Returns SQL the VALUES for an INSERT statement given the passed in +columns+
|
||||||
# and +array_of_attributes+.
|
# and +array_of_attributes+.
|
||||||
def values_sql_for_column_names_and_attributes(column_names, array_of_attributes) # :nodoc:
|
def values_sql_for_columns_and_attributes(columns, array_of_attributes) # :nodoc:
|
||||||
columns = column_names.map { |name| columns_hash[name.to_s] }
|
|
||||||
|
|
||||||
array_of_attributes.map do |arr|
|
array_of_attributes.map do |arr|
|
||||||
my_values = arr.each_with_index.map do |val,j|
|
my_values = arr.each_with_index.map do |val,j|
|
||||||
if !sequence_name.blank? && column_names[j] == primary_key && val.nil?
|
column = columns[j]
|
||||||
|
if !sequence_name.blank? && column.name == primary_key && val.nil?
|
||||||
connection.next_value_for_sequence(sequence_name)
|
connection.next_value_for_sequence(sequence_name)
|
||||||
else
|
else
|
||||||
connection.quote(val, columns[j])
|
connection.quote(column.type_cast(val), column)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
"(#{my_values.join(',')})"
|
"(#{my_values.join(',')})"
|
||||||
|
|
Loading…
Reference in a new issue