From 24ac36be7150f97ac0a61cf7cbe7d212097ef1a6 Mon Sep 17 00:00:00 2001 From: Boris Slobodin Date: Sun, 9 Apr 2017 16:05:13 -0700 Subject: exclude ORDER BY clause for exists? (#28699) --- activerecord/lib/active_record/relation/finder_methods.rb | 2 +- activerecord/test/cases/finder_test.rb | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) (limited to 'activerecord') diff --git a/activerecord/lib/active_record/relation/finder_methods.rb b/activerecord/lib/active_record/relation/finder_methods.rb index 14c2ddd85b..a1459c87c6 100644 --- a/activerecord/lib/active_record/relation/finder_methods.rb +++ b/activerecord/lib/active_record/relation/finder_methods.rb @@ -383,7 +383,7 @@ module ActiveRecord end def construct_relation_for_exists(relation, conditions) - relation = relation.except(:select, :distinct)._select!(ONE_AS_ONE).limit!(1) + relation = relation.except(:select, :distinct, :order)._select!(ONE_AS_ONE).limit!(1) case conditions when Array, Hash diff --git a/activerecord/test/cases/finder_test.rb b/activerecord/test/cases/finder_test.rb index 4fa664697c..a7b6333010 100644 --- a/activerecord/test/cases/finder_test.rb +++ b/activerecord/test/cases/finder_test.rb @@ -208,6 +208,11 @@ class FinderTest < ActiveRecord::TestCase assert_equal true, Topic.order(:id).distinct.exists? end + # Ensure +exists?+ runs without an error by excluding order value. + def test_exists_with_order + assert_equal true, Topic.order("invalid sql here").exists? + end + def test_exists_with_joins assert_equal true, Topic.joins(:replies).where(replies_topics: { approved: true }).order("replies_topics.created_at DESC").exists? end -- cgit v1.2.3