aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
diff options
context:
space:
mode:
authorRafael Mendonça França <rafaelmfranca@gmail.com>2015-10-20 15:25:23 -0200
committerRafael Mendonça França <rafaelmfranca@gmail.com>2015-10-20 15:26:22 -0200
commitf684b7ac8c17afb1712c4ab774f1ae3e14b5c149 (patch)
tree948cf5a6f2bcdda6bc8e9b2c5a581a50418a43a4 /activerecord
parentdda4f608902752c5071809cedbe675086f0669be (diff)
parentd9bb13ba048bc215249b13001f16cb2d14e91455 (diff)
downloadrails-f684b7ac8c17afb1712c4ab774f1ae3e14b5c149.tar.gz
rails-f684b7ac8c17afb1712c4ab774f1ae3e14b5c149.tar.bz2
rails-f684b7ac8c17afb1712c4ab774f1ae3e14b5c149.zip
Merge pull request #21974 from jbranchaud/reorder-has-many-assocation-constraints
Reorder application of has_many association constraints.
Diffstat (limited to 'activerecord')
-rw-r--r--activerecord/test/cases/associations/has_many_associations_test.rb24
-rw-r--r--activerecord/test/models/post.rb1
2 files changed, 20 insertions, 5 deletions
diff --git a/activerecord/test/cases/associations/has_many_associations_test.rb b/activerecord/test/cases/associations/has_many_associations_test.rb
index 4ecf53e6d1..eb94870a35 100644
--- a/activerecord/test/cases/associations/has_many_associations_test.rb
+++ b/activerecord/test/cases/associations/has_many_associations_test.rb
@@ -2181,6 +2181,26 @@ class HasManyAssociationsTest < ActiveRecord::TestCase
assert_equal [bulb1, bulb2], car.all_bulbs.sort_by(&:id)
end
+ test "can unscope and where the default scope of the associated model" do
+ Car.has_many :other_bulbs, -> { unscope(where: [:name]).where(name: 'other') }, class_name: "Bulb"
+ car = Car.create!
+ bulb1 = Bulb.create! name: "defaulty", car: car
+ bulb2 = Bulb.create! name: "other", car: car
+
+ assert_equal [bulb1], car.bulbs
+ assert_equal [bulb2], car.other_bulbs
+ end
+
+ test "can rewhere the default scope of the associated model" do
+ Car.has_many :old_bulbs, -> { rewhere(name: 'old') }, class_name: "Bulb"
+ car = Car.create!
+ bulb1 = Bulb.create! name: "defaulty", car: car
+ bulb2 = Bulb.create! name: "old", car: car
+
+ assert_equal [bulb1], car.bulbs
+ assert_equal [bulb2], car.old_bulbs
+ end
+
test 'unscopes the default scope of associated model when used with include' do
car = Car.create!
bulb = Bulb.create! name: "other", car: car
@@ -2358,8 +2378,4 @@ class HasManyAssociationsTest < ActiveRecord::TestCase
assert_equal [bulb.id], car.bulb_ids
assert_no_queries { car.bulb_ids }
end
-
- def test_has_many_association_with_rewhere
- assert_equal 'Don\'t think too hard', posts(:welcome).comments_with_rewhere.first.body
- end
end
diff --git a/activerecord/test/models/post.rb b/activerecord/test/models/post.rb
index 45a379df98..81a18188d4 100644
--- a/activerecord/test/models/post.rb
+++ b/activerecord/test/models/post.rb
@@ -67,7 +67,6 @@ class Post < ActiveRecord::Base
end
has_many :comments_with_extend_2, extend: [NamedExtension, NamedExtension2], class_name: "Comment", foreign_key: "post_id"
- has_many :comments_with_rewhere, -> { rewhere(post_id: 2) }, class_name: "Comment"
has_many :author_favorites, :through => :author
has_many :author_categorizations, :through => :author, :source => :categorizations