diff options
author | Ryuta Kamizono <kamipo@gmail.com> | 2017-01-29 14:46:27 +0900 |
---|---|---|
committer | Ryuta Kamizono <kamipo@gmail.com> | 2017-01-29 15:06:51 +0900 |
commit | e09da8bf7853f8f4f1ebb5c52f9b688a32b4dfaa (patch) | |
tree | 0da8ff4943aa9d72e3d9a90b3ea9a10ba7be1688 /activerecord/test/cases | |
parent | 6a1c0218df1fcffaac97e7288db07934bfef277f (diff) | |
download | rails-e09da8bf7853f8f4f1ebb5c52f9b688a32b4dfaa.tar.gz rails-e09da8bf7853f8f4f1ebb5c52f9b688a32b4dfaa.tar.bz2 rails-e09da8bf7853f8f4f1ebb5c52f9b688a32b4dfaa.zip |
Reload `through_record` that has been destroyed in `create_through_record`
This is an alternative of #27714.
If `has_one :through` association has set `nil`, `through_record` is
destroyed but still remain loaded target in `through_proxy` until
`reload` or `reset` explicitly.
If `through_proxy` is not reset (remain destroyed (frozen) target),
setting new record causes `RuntimeError: Can't modify frozen hash`.
To prevent `RuntimeError`, should reload `through_record` that has been
destroyed in `create_through_record`.
Diffstat (limited to 'activerecord/test/cases')
-rw-r--r-- | activerecord/test/cases/associations/has_one_through_associations_test.rb | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/activerecord/test/cases/associations/has_one_through_associations_test.rb b/activerecord/test/cases/associations/has_one_through_associations_test.rb index 432c3526a5..38a729d2d4 100644 --- a/activerecord/test/cases/associations/has_one_through_associations_test.rb +++ b/activerecord/test/cases/associations/has_one_through_associations_test.rb @@ -86,6 +86,13 @@ class HasOneThroughAssociationsTest < ActiveRecord::TestCase assert_nil @member.club end + def test_set_record_after_delete_association + @member.club = nil + @member.club = clubs(:moustache_club) + @member.reload + assert_equal clubs(:moustache_club), @member.club + end + def test_has_one_through_polymorphic assert_equal clubs(:moustache_club), @member.sponsor_club end |