Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Don't interpret decimals as table names in ActiveRecord::Associations…
…::ClassMethods#references_eager_loaded_tables? [#532 state:resolved]

Signed-off-by: Pratik Naik <pratiknaik@gmail.com>
  • Loading branch information
wagenet authored and tarmo committed Aug 24, 2008
1 parent 7688678 commit 104220e
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 3 deletions.
6 changes: 3 additions & 3 deletions activerecord/lib/active_record/associations.rb
Expand Up @@ -1520,19 +1520,19 @@ def conditions_tables(options)
else all << cond
end
end
conditions.join(' ').scan(/([\.\w]+).?\./).flatten
conditions.join(' ').scan(/([\.a-zA-Z_]+).?\./).flatten
end

def order_tables(options)
order = [options[:order], scope(:find, :order) ].join(", ")
return [] unless order && order.is_a?(String)
order.scan(/([\.\w]+).?\./).flatten
order.scan(/([\.a-zA-Z_]+).?\./).flatten
end

def selects_tables(options)
select = options[:select]
return [] unless select && select.is_a?(String)
select.scan(/"?([\.\w]+)"?.?\./).flatten
select.scan(/"?([\.a-zA-Z_]+)"?.?\./).flatten
end

# Checks if the conditions reference a table other than the current model table
Expand Down
7 changes: 7 additions & 0 deletions activerecord/test/cases/associations/eager_test.rb
Expand Up @@ -559,6 +559,13 @@ def test_eager_with_valid_association_as_string_not_symbol
assert_nothing_raised { Post.find(:all, :include => 'comments') }
end

def test_eager_with_floating_point_numbers
assert_queries(2) do
# Before changes, the floating point numbers will be interpreted as table names and will cause this to run in one query
Comment.find :all, :conditions => "123.456 = 123.456", :include => :post
end
end

def test_preconfigured_includes_with_belongs_to
author = posts(:welcome).author_with_posts
assert_no_queries {assert_equal 5, author.posts.size}
Expand Down

0 comments on commit 104220e

Please sign in to comment.