aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/associations
diff options
context:
space:
mode:
authorZoltan Kiss <zkiss@ackmanndickenson.com>2014-10-10 15:13:53 -0500
committerZoltan Kiss <zkiss@ackmanndickenson.com>2015-03-26 15:58:36 -0500
commit1813350f0927dde01a11ebbd33a8f6b0deacd073 (patch)
tree4215b714a4e1b8bdcbdf6ed609fe0b896425bb4c /activerecord/test/cases/associations
parent8b451e3a315666b93da43e7b61503014661f0ac6 (diff)
downloadrails-1813350f0927dde01a11ebbd33a8f6b0deacd073.tar.gz
rails-1813350f0927dde01a11ebbd33a8f6b0deacd073.tar.bz2
rails-1813350f0927dde01a11ebbd33a8f6b0deacd073.zip
Fix nested `has many :through` associations on unpersisted instances
Fixes: #16313
Diffstat (limited to 'activerecord/test/cases/associations')
-rw-r--r--activerecord/test/cases/associations/has_many_through_associations_test.rb29
1 files changed, 29 insertions, 0 deletions
diff --git a/activerecord/test/cases/associations/has_many_through_associations_test.rb b/activerecord/test/cases/associations/has_many_through_associations_test.rb
index 5f52c65412..83365884f5 100644
--- a/activerecord/test/cases/associations/has_many_through_associations_test.rb
+++ b/activerecord/test/cases/associations/has_many_through_associations_test.rb
@@ -1166,4 +1166,33 @@ class HasManyThroughAssociationsTest < ActiveRecord::TestCase
post_through = organization.posts.build
assert_equal post_direct.author_id, post_through.author_id
end
+
+ def test_single_has_many_through_association_with_unpersisted_parent_instance
+ post_with_single_has_many_through = Class.new(Post) do
+ def self.name; 'PostWithSingleHasManyThrough'; end
+ has_many :subscriptions, through: :author
+ end
+ post = post_with_single_has_many_through.new
+ post.author = Author.create!(name: 'Federico Morissette')
+ book = Book.create!(name: 'essays on single has many through associations')
+ post.author.books << book
+ subscription = Subscription.first
+ book.subscriptions << subscription
+ assert_equal [subscription], post.subscriptions.to_a
+ end
+
+ def test_nested_has_many_through_association_with_unpersisted_parent_instance
+ post_with_nested_has_many_through = Class.new(Post) do
+ def self.name; 'PostWithNestedHasManyThrough'; end
+ has_many :books, through: :author
+ has_many :subscriptions, through: :books
+ end
+ post = post_with_nested_has_many_through.new
+ post.author = Author.create!(name: 'Obie Weissnat')
+ book = Book.create!(name: 'essays on nested single has many through associations')
+ post.author.books << book
+ subscription = Subscription.first
+ book.subscriptions << subscription
+ assert_equal [subscription], post.subscriptions.to_a
+ end
end