diff options
author | Akira Matsuda <ronnie@dio.jp> | 2011-11-09 04:46:11 +0900 |
---|---|---|
committer | Akira Matsuda <ronnie@dio.jp> | 2011-11-09 04:51:11 +0900 |
commit | 74c6e80cabd8e3b7751fc3a32c9ad95c1780054b (patch) | |
tree | 515d82113e061b166d26cfc442f78634cbc512cb | |
parent | 5b21bfa84862807d62b297de76805de8afcee511 (diff) | |
download | rails-74c6e80cabd8e3b7751fc3a32c9ad95c1780054b.tar.gz rails-74c6e80cabd8e3b7751fc3a32c9ad95c1780054b.tar.bz2 rails-74c6e80cabd8e3b7751fc3a32c9ad95c1780054b.zip |
exclude ORDER BY clause when querying Relation#exists?
-rw-r--r-- | activerecord/lib/active_record/relation/finder_methods.rb | 2 | ||||
-rw-r--r-- | activerecord/test/cases/finder_test.rb | 5 |
2 files changed, 6 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/relation/finder_methods.rb b/activerecord/lib/active_record/relation/finder_methods.rb index 7eeb3dde70..3c8e0f2052 100644 --- a/activerecord/lib/active_record/relation/finder_methods.rb +++ b/activerecord/lib/active_record/relation/finder_methods.rb @@ -191,7 +191,7 @@ module ActiveRecord join_dependency = construct_join_dependency_for_association_find relation = construct_relation_for_association_find(join_dependency) - relation = relation.except(:select).select("1").limit(1) + relation = relation.except(:select, :order).select("1").limit(1) case id when Array, Hash diff --git a/activerecord/test/cases/finder_test.rb b/activerecord/test/cases/finder_test.rb index 3088ab012f..69754d23b9 100644 --- a/activerecord/test/cases/finder_test.rb +++ b/activerecord/test/cases/finder_test.rb @@ -57,6 +57,11 @@ class FinderTest < ActiveRecord::TestCase assert Topic.first.replies.exists? end + # ensures +exists?+ runs valid SQL by excluding order value + def test_exists_with_order + assert Topic.order(:id).uniq.exists? + end + def test_does_not_exist_with_empty_table_and_no_args_given Topic.delete_all assert !Topic.exists? |