aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/associations
diff options
context:
space:
mode:
authorRyuta Kamizono <kamipo@gmail.com>2018-01-10 20:25:37 +0900
committerRyuta Kamizono <kamipo@gmail.com>2018-01-10 20:28:37 +0900
commit027f865fc8b262d9ba3ee51da3483e94a5489b66 (patch)
treefdac6eeb639beafed739ea9ddf1b940f9219233c /activerecord/test/cases/associations
parent7ccd070c91ae1089f307c8557dcbd9a14837316c (diff)
parent1813350f0927dde01a11ebbd33a8f6b0deacd073 (diff)
downloadrails-027f865fc8b262d9ba3ee51da3483e94a5489b66.tar.gz
rails-027f865fc8b262d9ba3ee51da3483e94a5489b66.tar.bz2
rails-027f865fc8b262d9ba3ee51da3483e94a5489b66.zip
Merge pull request #16314 from zoltankiss/allow-nested-has-many-associations-on-unpersisted-parent-instances
fix nested `has many :through` associations on unpersisted parent instances
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 7c9c9e81ab..a19cd9d365 100644
--- a/activerecord/test/cases/associations/has_many_through_associations_test.rb
+++ b/activerecord/test/cases/associations/has_many_through_associations_test.rb
@@ -1308,6 +1308,35 @@ class HasManyThroughAssociationsTest < ActiveRecord::TestCase
end
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 has many through associations")
+ post.author.books << book
+ subscription = Subscription.first
+ book.subscriptions << subscription
+ assert_equal [subscription], post.subscriptions.to_a
+ end
+
private
def make_model(name)
Class.new(ActiveRecord::Base) { define_singleton_method(:name) { name } }