aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEmilio Tagua <miloops@gmail.com>2009-08-18 19:51:41 -0300
committerEmilio Tagua <miloops@gmail.com>2009-08-18 19:51:41 -0300
commitd5476b466f086921c71cb1caf6b9773cbdb5b4e3 (patch)
treea35336a1ce29bb1a0699f2fb360388d439e04072
parentc1f833dff47eb5c0a74eb80f011597c7130bc8d7 (diff)
downloadrails-d5476b466f086921c71cb1caf6b9773cbdb5b4e3.tar.gz
rails-d5476b466f086921c71cb1caf6b9773cbdb5b4e3.tar.bz2
rails-d5476b466f086921c71cb1caf6b9773cbdb5b4e3.zip
habtm insertion with ARel integration.
-rw-r--r--activerecord/lib/active_record/associations/has_and_belongs_to_many_association.rb13
1 files changed, 5 insertions, 8 deletions
diff --git a/activerecord/lib/active_record/associations/has_and_belongs_to_many_association.rb b/activerecord/lib/active_record/associations/has_and_belongs_to_many_association.rb
index a1aac3ead5..da1fbfe0b7 100644
--- a/activerecord/lib/active_record/associations/has_and_belongs_to_many_association.rb
+++ b/activerecord/lib/active_record/associations/has_and_belongs_to_many_association.rb
@@ -56,26 +56,23 @@ module ActiveRecord
if @reflection.options[:insert_sql]
@owner.connection.insert(interpolate_sql(@reflection.options[:insert_sql], record))
else
+ relation = arel_table(@reflection.options[:join_table])
attributes = columns.inject({}) do |attrs, column|
case column.name.to_s
when @reflection.primary_key_name.to_s
- attrs[column.name] = owner_quoted_id
+ attrs[relation[column.name]] = owner_quoted_id
when @reflection.association_foreign_key.to_s
- attrs[column.name] = record.quoted_id
+ attrs[relation[column.name]] = record.quoted_id
else
if record.has_attribute?(column.name)
value = @owner.send(:quote_value, record[column.name], column)
- attrs[column.name] = value unless value.nil?
+ attrs[relation[column.name]] = value unless value.nil?
end
end
attrs
end
- sql =
- "INSERT INTO #{@owner.connection.quote_table_name @reflection.options[:join_table]} (#{@owner.send(:quoted_column_names, attributes).join(', ')}) " +
- "VALUES (#{attributes.values.join(', ')})"
-
- @owner.connection.insert(sql)
+ relation.insert(attributes)
end
return true