diff options
author | Peter Wagenet <peter.wagenet@gmail.com> | 2008-07-02 21:27:42 -0400 |
---|---|---|
committer | Pratik Naik <pratiknaik@gmail.com> | 2008-08-21 17:21:17 +0100 |
commit | 8622787f8748434b4ceb2b925a35b17a38e1f2d6 (patch) | |
tree | 421b5424d77319f99a015b9658f447196d73a8c2 | |
parent | 3724dafe71f4afb2ca9f4d7d2526b228aa6c05a3 (diff) | |
download | rails-8622787f8748434b4ceb2b925a35b17a38e1f2d6.tar.gz rails-8622787f8748434b4ceb2b925a35b17a38e1f2d6.tar.bz2 rails-8622787f8748434b4ceb2b925a35b17a38e1f2d6.zip |
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>
-rwxr-xr-x[-rw-r--r--] | activerecord/lib/active_record/associations.rb | 6 | ||||
-rw-r--r-- | activerecord/test/cases/associations/eager_test.rb | 7 |
2 files changed, 10 insertions, 3 deletions
diff --git a/activerecord/lib/active_record/associations.rb b/activerecord/lib/active_record/associations.rb index b72fdb305f..b9039ce996 100644..100755 --- a/activerecord/lib/active_record/associations.rb +++ b/activerecord/lib/active_record/associations.rb @@ -1679,19 +1679,19 @@ module ActiveRecord 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 diff --git a/activerecord/test/cases/associations/eager_test.rb b/activerecord/test/cases/associations/eager_test.rb index 58506574f8..f37e18df35 100644 --- a/activerecord/test/cases/associations/eager_test.rb +++ b/activerecord/test/cases/associations/eager_test.rb @@ -559,6 +559,13 @@ class EagerAssociationTest < ActiveRecord::TestCase 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} |