diff options
author | Jeremy Kemper <jeremy@bitsweat.net> | 2009-11-09 16:51:33 -0800 |
---|---|---|
committer | Jeremy Kemper <jeremy@bitsweat.net> | 2009-11-09 16:51:33 -0800 |
commit | 3718cdab13696a7c60921803349f63f9c9478db2 (patch) | |
tree | 5e0f8ea0d613a3968db8b52c32860bf36cb5ef7e /lib | |
parent | 567a14205d5a17e7cffc012bcc8c1132da99124c (diff) | |
parent | 4dcfe6786e5fe72c27cadc5c0ee18aa6a67ba2bd (diff) | |
download | rails-3718cdab13696a7c60921803349f63f9c9478db2.tar.gz rails-3718cdab13696a7c60921803349f63f9c9478db2.tar.bz2 rails-3718cdab13696a7c60921803349f63f9c9478db2.zip |
Merge commit 'brynary/master'
Diffstat (limited to 'lib')
-rw-r--r-- | lib/arel/engines/sql/relations/writes.rb | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/lib/arel/engines/sql/relations/writes.rb b/lib/arel/engines/sql/relations/writes.rb index 42496ef735..50fcb8e07e 100644 --- a/lib/arel/engines/sql/relations/writes.rb +++ b/lib/arel/engines/sql/relations/writes.rb @@ -14,8 +14,19 @@ module Arel insertion_attributes_values_sql = if record.is_a?(Value) record.value else - build_query "(#{record.keys.collect { |key| engine.quote_column_name(key.name) }.join(', ')})", - "VALUES (#{record.collect { |key, value| key.format(value) }.join(', ')})" + attributes = record.keys.sort_by do |attribute| + attribute.name.to_s + end + + first = attributes.collect do |key| + engine.quote_column_name(key.name) + end.join(', ') + + second = attributes.collect do |key| + key.format(record[key]) + end.join(', ') + + build_query "(#{first})", "VALUES (#{second})" end build_query \ @@ -37,7 +48,12 @@ module Arel def assignment_sql if assignments.respond_to?(:collect) - assignments.collect do |attribute, value| + attributes = assignments.keys.sort_by do |attribute| + attribute.name.to_s + end + + attributes.map do |attribute| + value = assignments[attribute] "#{engine.quote_column_name(attribute.name)} = #{attribute.format(value)}" end.join(",\n") else |