diff options
author | Ryuta Kamizono <kamipo@gmail.com> | 2018-01-10 20:25:37 +0900 |
---|---|---|
committer | Ryuta Kamizono <kamipo@gmail.com> | 2018-01-10 20:28:37 +0900 |
commit | 027f865fc8b262d9ba3ee51da3483e94a5489b66 (patch) | |
tree | fdac6eeb639beafed739ea9ddf1b940f9219233c /activerecord/test | |
parent | 7ccd070c91ae1089f307c8557dcbd9a14837316c (diff) | |
parent | 1813350f0927dde01a11ebbd33a8f6b0deacd073 (diff) | |
download | rails-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')
-rw-r--r-- | activerecord/test/cases/associations/has_many_through_associations_test.rb | 29 |
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 } } |