aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xactiverecord/lib/active_record/associations.rb4
-rw-r--r--activerecord/test/cases/associations/eager_test.rb24
2 files changed, 26 insertions, 2 deletions
diff --git a/activerecord/lib/active_record/associations.rb b/activerecord/lib/active_record/associations.rb
index cb17b6e483..3ff2d5db6b 100755
--- a/activerecord/lib/active_record/associations.rb
+++ b/activerecord/lib/active_record/associations.rb
@@ -1379,7 +1379,7 @@ module ActiveRecord
end
end
return false unless conditions.any?
- conditions.join(' ').scan(/([\.\w]+)\.\w+/).flatten.any? do |condition_table_name|
+ conditions.join(' ').scan(/([\.\w]+).?\./).flatten.any? do |condition_table_name|
condition_table_name != table_name
end
end
@@ -1388,7 +1388,7 @@ module ActiveRecord
def include_eager_order?(options)
order = options[:order]
return false unless order
- order.to_s.scan(/([\.\w]+)\.\w+/).flatten.any? do |order_table_name|
+ order.to_s.scan(/([\.\w]+).?\./).flatten.any? do |order_table_name|
order_table_name != table_name
end
end
diff --git a/activerecord/test/cases/associations/eager_test.rb b/activerecord/test/cases/associations/eager_test.rb
index b606092d7e..c95099c146 100644
--- a/activerecord/test/cases/associations/eager_test.rb
+++ b/activerecord/test/cases/associations/eager_test.rb
@@ -119,6 +119,30 @@ class EagerAssociationTest < ActiveRecord::TestCase
assert_equal [6,7,8], comments.collect { |c| c.id }
end
+ def test_eager_association_loading_with_belongs_to_and_conditions_string_with_unquoted_table_name
+ assert_nothing_raised do
+ Comment.find(:all, :include => :post, :conditions => ['posts.id = ?',4])
+ end
+ end
+
+ def test_eager_association_loading_with_belongs_to_and_conditions_string_with_quoted_table_name
+ assert_nothing_raised do
+ Comment.find(:all, :include => :post, :conditions => ["#{Comment.connection.quote_table_name('posts.id')} = ?",4])
+ end
+ end
+
+ def test_eager_association_loading_with_belongs_to_and_order_string_with_unquoted_table_name
+ assert_nothing_raised do
+ Comment.find(:all, :include => :post, :order => 'posts.id')
+ end
+ end
+
+ def test_eager_association_loading_with_belongs_to_and_order_string_with_quoted_table_name
+ assert_nothing_raised do
+ Comment.find(:all, :include => :post, :order => Comment.connection.quote_table_name('posts.id'))
+ end
+ end
+
def test_eager_association_loading_with_belongs_to_and_limit_and_multiple_associations
posts = Post.find(:all, :include => [:author, :very_special_comment], :limit => 1, :order => 'posts.id')
assert_equal 1, posts.length