diff --git a/activerecord/lib/active_record/relation/query_methods.rb b/activerecord/lib/active_record/relation/query_methods.rb index 242eff25776e3..0e44c94e8dd8c 100644 --- a/activerecord/lib/active_record/relation/query_methods.rb +++ b/activerecord/lib/active_record/relation/query_methods.rb @@ -372,7 +372,7 @@ def reorder(*args) # Same as #reorder but operates on relation in-place instead of copying. def reorder!(*args) # :nodoc: - preprocess_order_args(args) + preprocess_order_args(args) unless args.all?(&:blank?) self.reordering_value = true self.order_values = args diff --git a/activerecord/test/cases/relations_test.rb b/activerecord/test/cases/relations_test.rb index 2937f47c1d001..3ca46815ad8a2 100644 --- a/activerecord/test/cases/relations_test.rb +++ b/activerecord/test/cases/relations_test.rb @@ -1737,6 +1737,20 @@ def test_reverse_order_with_reorder_nil_removes_the_order assert_nil relation.order_values.first end + def test_reorder_with_first + sql_log = capture_sql do + assert Post.order(:title).reorder(nil).first + end + assert sql_log.all? { |sql| !/order by/i.match?(sql) }, "ORDER BY was used in the query: #{sql_log}" + end + + def test_reorder_with_take + sql_log = capture_sql do + assert Post.order(:title).reorder(nil).take + end + assert sql_log.all? { |sql| !/order by/i.match?(sql) }, "ORDER BY was used in the query: #{sql_log}" + end + def test_presence topics = Topic.all