Это решение, основанное на комментариях mu слишком короткое (Спасибо!).
Я использую ручной SQL-оператор и выполняю его.
insert_statement = "INSERT INTO table_name (custom_property_from_parameter"
# the properties from the model are fetched by a method, to keep it a little bit generic, loop trough them and give their names to the statement
Model.parameter_names.each do |parameter|
insert_statement += "," + parameter
end
insert_statement += ") VALUES "
@new_values.each do |new_value|
insert_statement += "(" + params[:custom_property]
Model.parameter_names.each do |parameter|
# Rails' nil has to be converted into NULL for SQL
if nil == new_value.send(parameter)
insert_statement += ",NULL"
else
insert_statement += "," + new_value.send(parameter).to_s
end
end
insert_statement += "),"
@added_counter += 1
end
# Remove the last , with ;
insert_statement = insert_statement[0..-2]
insert_statement += ";"
# now execute the statement
ActiveRecord::Base.connection.execute insert_statement
Это решение занимает примерно треть времени. Но для меня это немного похоже на взлом.