aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test
diff options
context:
space:
mode:
authorsuginoy <suginoyasuhiro@gmail.com>2016-07-15 01:12:53 +0900
committersuginoy <suginoyasuhiro@gmail.com>2016-07-19 10:19:59 +0900
commitcf2574b1c9921377cbb5c7da38433b90fdc4a68c (patch)
tree91abd59035e79f05407026ede4da4bb8fb26823d /activerecord/test
parentc02f3ea5e31677e7953abee5a1a2d5398d85ad47 (diff)
downloadrails-cf2574b1c9921377cbb5c7da38433b90fdc4a68c.tar.gz
rails-cf2574b1c9921377cbb5c7da38433b90fdc4a68c.tar.bz2
rails-cf2574b1c9921377cbb5c7da38433b90fdc4a68c.zip
Fix the calling `merge` method at first in a scope
Changing the order of method chaining `merge` and other query method such as `joins` should produce the same result. ```ruby class Topic < ApplicationRecord scope :safe_chaininig, -> { joins(:comments).merge(Comment.newest) } scope :unsafe_chaininig, -> { merge(Comment.newest).joins(:comments) } #=> NoMethodError end ```
Diffstat (limited to 'activerecord/test')
-rw-r--r--activerecord/test/cases/scoping/named_scoping_test.rb7
1 files changed, 7 insertions, 0 deletions
diff --git a/activerecord/test/cases/scoping/named_scoping_test.rb b/activerecord/test/cases/scoping/named_scoping_test.rb
index 0e277ed235..f0dac07acc 100644
--- a/activerecord/test/cases/scoping/named_scoping_test.rb
+++ b/activerecord/test/cases/scoping/named_scoping_test.rb
@@ -46,6 +46,13 @@ class NamedScopingTest < ActiveRecord::TestCase
assert_equal Topic.average(:replies_count), Topic.base.average(:replies_count)
end
+ def test_calling_merge_at_first_in_scope
+ Topic.class_eval do
+ scope :calling_merge_at_first_in_scope, Proc.new { merge(Topic.replied) }
+ end
+ assert_equal Topic.calling_merge_at_first_in_scope.to_a, Topic.replied.to_a
+ end
+
def test_method_missing_priority_when_delegating
klazz = Class.new(ActiveRecord::Base) do
self.table_name = "topics"