Fixed that AssociationCollection#delete_all should work even if the records of the association are not loaded yet. [Florian Weber]

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@4144 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
Florian Weber
2006-04-03 22:37:56 +00:00
parent 109c56df3a
commit bb4c6797bf
3 changed files with 22 additions and 0 deletions

View File

@@ -1,5 +1,7 @@
*SVN*
* Fixed that AssociationCollection#delete_all should work even if the records of the association are not loaded yet. [Florian Weber]
* Changed those private ActiveRecord methods to take optional third argument :auto instead of nil for performance optimizations. (closes #4456) [Stefan]
* Private ActiveRecord methods add_limit!, add_joins!, and add_conditions! take an OPTIONAL third argument 'scope' (closes #4456) [Rick]

View File

@@ -37,6 +37,7 @@ module ActiveRecord
# Remove all records from this association
def delete_all
load_target
delete(@target)
@target = []
end

View File

@@ -550,6 +550,25 @@ class HasManyAssociationsTest < Test::Unit::TestCase
assert_equal 0, companies(:first_firm).clients_of_firm.size
assert_equal 0, companies(:first_firm).clients_of_firm(true).size
end
def test_delete_all
force_signal37_to_load_all_clients_of_firm
companies(:first_firm).clients_of_firm.create("name" => "Another Client")
assert_equal 2, companies(:first_firm).clients_of_firm.size
companies(:first_firm).clients_of_firm.delete_all
assert_equal 0, companies(:first_firm).clients_of_firm.size
assert_equal 0, companies(:first_firm).clients_of_firm(true).size
end
def test_delete_all_with_not_yet_loaded_association_collection
force_signal37_to_load_all_clients_of_firm
companies(:first_firm).clients_of_firm.create("name" => "Another Client")
assert_equal 2, companies(:first_firm).clients_of_firm.size
companies(:first_firm).clients_of_firm.reset
companies(:first_firm).clients_of_firm.delete_all
assert_equal 0, companies(:first_firm).clients_of_firm.size
assert_equal 0, companies(:first_firm).clients_of_firm(true).size
end
def test_clearing_an_association_collection
firm = companies(:first_firm)