提交 0fde84c0 编写于 作者: A Andrew White

Don't remove the target if it has already been destroyed

上级 b3f45195
......@@ -10,7 +10,7 @@ def replace(record, save = true)
reflection.klass.transaction do
if target && target != record
remove_target!(options[:dependent])
remove_target!(options[:dependent]) unless target.destroyed?
end
if record
......
......@@ -95,6 +95,15 @@ def test_nullification_on_association_change
assert_nil Account.find(old_account_id).firm_id
end
def test_natural_assignment_to_nil_after_destroy
firm = companies(:rails_core)
old_account_id = firm.account.id
firm.account.destroy
firm.account = nil
assert_nil companies(:rails_core).account
assert_raise(ActiveRecord::RecordNotFound) { Account.find(old_account_id) }
end
def test_association_change_calls_delete
companies(:first_firm).deletable_account = Account.new(:credit_limit => 5)
assert_equal [], Account.destroyed_account_ids[companies(:first_firm).id]
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册