aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKarthik Krishnan <info@karthiks.in>2008-12-20 20:52:48 +0000
committerPratik Naik <pratiknaik@gmail.com>2008-12-20 21:08:51 +0000
commit75a133f92ff7e27b83032babf829d8a58803bb3c (patch)
treeb6d68bff1f29febd1eb3b91987d6aaff9a4963fc
parentc092dbef50ba207174a94b7e0beb7782a3d86649 (diff)
downloadrails-75a133f92ff7e27b83032babf829d8a58803bb3c.tar.gz
rails-75a133f92ff7e27b83032babf829d8a58803bb3c.tar.bz2
rails-75a133f92ff7e27b83032babf829d8a58803bb3c.zip
Fix has many through not quoting table names [#1163 state:resolved]
Signed-off-by: Frederick Cheung <frederick.cheung@gmail.com>
-rwxr-xr-xactiverecord/lib/active_record/associations.rb2
-rw-r--r--activerecord/lib/active_record/associations/has_many_through_association.rb6
-rw-r--r--activerecord/test/cases/associations/has_many_through_associations_test.rb4
3 files changed, 8 insertions, 4 deletions
diff --git a/activerecord/lib/active_record/associations.rb b/activerecord/lib/active_record/associations.rb
index 3cee9c7af2..07bc50c886 100755
--- a/activerecord/lib/active_record/associations.rb
+++ b/activerecord/lib/active_record/associations.rb
@@ -2198,7 +2198,7 @@ module ActiveRecord
protected
def aliased_table_name_for(name, suffix = nil)
- if !parent.table_joins.blank? && parent.table_joins.to_s.downcase =~ %r{join(\s+\w+)?\s+#{name.downcase}\son}
+ if !parent.table_joins.blank? && parent.table_joins.to_s.downcase =~ %r{join(\s+\w+)?\s+#{active_record.connection.quote_table_name name.downcase}\son}
@join_dependency.table_aliases[name] += 1
end
diff --git a/activerecord/lib/active_record/associations/has_many_through_association.rb b/activerecord/lib/active_record/associations/has_many_through_association.rb
index a0bb3a45b0..2eeeb28d1f 100644
--- a/activerecord/lib/active_record/associations/has_many_through_association.rb
+++ b/activerecord/lib/active_record/associations/has_many_through_association.rb
@@ -160,9 +160,9 @@ module ActiveRecord
end
"INNER JOIN %s ON %s.%s = %s.%s %s #{@reflection.options[:joins]} #{custom_joins}" % [
- @reflection.through_reflection.table_name,
- @reflection.table_name, reflection_primary_key,
- @reflection.through_reflection.table_name, source_primary_key,
+ @reflection.through_reflection.quoted_table_name,
+ @reflection.quoted_table_name, reflection_primary_key,
+ @reflection.through_reflection.quoted_table_name, source_primary_key,
polymorphic_join
]
end
diff --git a/activerecord/test/cases/associations/has_many_through_associations_test.rb b/activerecord/test/cases/associations/has_many_through_associations_test.rb
index 0bfda337b2..ad6a5d6840 100644
--- a/activerecord/test/cases/associations/has_many_through_associations_test.rb
+++ b/activerecord/test/cases/associations/has_many_through_associations_test.rb
@@ -204,6 +204,10 @@ class HasManyThroughAssociationsTest < ActiveRecord::TestCase
assert_equal 2, people(:michael).posts.count(:include => :readers)
end
+ def test_inner_join_with_quoted_table_name
+ assert_equal 2, people(:michael).jobs.size
+ end
+
def test_get_ids
assert_equal [posts(:welcome).id, posts(:authorless).id].sort, people(:michael).post_ids.sort
end