From e302759451fbed36d7e8916d7b5c8377762e3efd Mon Sep 17 00:00:00 2001 From: Michael Koziarski Date: Thu, 29 Nov 2007 02:19:10 +0000 Subject: [PATCH] Make reset return nil when using a dangling belongs_to association. Current behaviour is to return false which can be confusing. Closes #10293 [fcheung] git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8236 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- .../associations/association_proxy.rb | 2 +- activerecord/test/associations_test.rb | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/activerecord/lib/active_record/associations/association_proxy.rb b/activerecord/lib/active_record/associations/association_proxy.rb index 32810c91e0..1e4414cfe3 100644 --- a/activerecord/lib/active_record/associations/association_proxy.rb +++ b/activerecord/lib/active_record/associations/association_proxy.rb @@ -46,8 +46,8 @@ module ActiveRecord alias :sql_conditions :conditions def reset - @target = nil @loaded = false + @target = nil end def reload diff --git a/activerecord/test/associations_test.rb b/activerecord/test/associations_test.rb index 20224cbd42..f2a87eec49 100755 --- a/activerecord/test/associations_test.rb +++ b/activerecord/test/associations_test.rb @@ -122,6 +122,23 @@ class AssociationProxyTest < Test::Unit::TestCase developer = Developer.create :name => "Bryan", :salary => 50_000 assert_equal 1, developer.reload.audit_logs.size end + + def test_failed_reload_returns_nil + p = setup_dangling_association + assert_nil p.author.reload + end + + def test_failed_reset_returns_nil + p = setup_dangling_association + assert_nil p.author.reset + end + + def setup_dangling_association + josh = Author.create(:name => "Josh") + p = Post.create(:title => "New on Edge", :body => "More cool stuff!", :author => josh) + josh.destroy + p + end end class HasOneAssociationsTest < Test::Unit::TestCase