From 9a7740d9e58262b9a1f6b095f533eac90acdfec3 Mon Sep 17 00:00:00 2001 From: Dimitri Krassovski Date: Mon, 10 Nov 2008 19:21:30 +0200 Subject: [PATCH] A test to show the problem --- .../associations/has_one_associations_test.rb | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-) diff --git a/activerecord/test/cases/associations/has_one_associations_test.rb b/activerecord/test/cases/associations/has_one_associations_test.rb index 14032a6..0902852 100644 --- a/activerecord/test/cases/associations/has_one_associations_test.rb +++ b/activerecord/test/cases/associations/has_one_associations_test.rb @@ -79,6 +79,14 @@ class HasOneAssociationsTest < ActiveRecord::TestCase assert_raises(ActiveRecord::RecordNotFound) { Account.find(old_account_id) } end + def test_nullification_on_association_change + firm = companies(:rails_core) + old_account_id = firm.account.id + firm.account = Account.new + # account is dependent with nullify, therefore its firm_id should be nil + assert_nil Account.find(old_account_id).firm_id + end + def test_natural_assignment_to_already_associated_record company = companies(:first_firm) account = accounts(:signals37) -- 1.5.3.8 From e40024c290ec1b3cc8bfe3d7ed78aa4ee3948fbc Mon Sep 17 00:00:00 2001 From: Dimitri Krassovski Date: Mon, 10 Nov 2008 19:52:09 +0200 Subject: [PATCH] Fix the case when has_one association is destroyed instead of being nullified --- .../associations/has_one_association.rb | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/activerecord/lib/active_record/associations/has_one_association.rb b/activerecord/lib/active_record/associations/has_one_association.rb index 9603230..a29fbf6 100644 --- a/activerecord/lib/active_record/associations/has_one_association.rb +++ b/activerecord/lib/active_record/associations/has_one_association.rb @@ -28,7 +28,7 @@ module ActiveRecord load_target unless @target.nil? || @target == obj - if dependent? && !dont_save + if dependent? && !dont_save && (@reflection.options[:dependent] != :nullify) @target.destroy unless @target.new_record? @owner.clear_association_cache else -- 1.5.3.8