Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Fix Associations#clear for not-yet-loaded associations (Patrick Lenz)

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2695 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
  • Loading branch information...
commit 5f0b9369cc857ef007a9b0f573b63225e342e4fd 1 parent 7219e82
Tobias Lütke authored
View
4 activerecord/CHANGELOG
@@ -1,6 +1,8 @@
*1.12.1* (October 19th, 2005)
-* HABTM finders shouldn't return readonly records. #2525 [patrick@lenz.sh]
+* Fixed Association#clear for associations which have not yet been accessed. #2524 [Patrick Lenz <patrick@lenz.sh>]
+
+* HABTM finders shouldn't return readonly records. #2525 [Patrick Lenz <patrick@lenz.sh>]
* Make all tests runnable on their own. #2521. [Blair Zajac <blair@orcaware.com>]
View
2  activerecord/lib/active_record/associations/association_collection.rb
@@ -59,7 +59,7 @@ def delete(*records)
# Removes all records from this association. Returns +self+ so method calls may be chained.
def clear
- return self if empty? # forces load_target if hasn't happened already
+ return self if length.zero? # forces load_target if hasn't happened already
if @options[:exclusively_dependent]
destroy_all
else
View
9 activerecord/test/associations_test.rb
@@ -566,6 +566,15 @@ def test_clearing_an_exclusively_dependent_association_collection
assert Client.find_by_id(client_id).nil?
end
+ def test_clearing_without_initial_access
+ firm = companies(:first_firm)
+
+ firm.clients_of_firm.clear
+
+ assert_equal 0, firm.clients_of_firm.size
+ assert_equal 0, firm.clients_of_firm(true).size
+ end
+
def test_deleting_a_item_which_is_not_in_the_collection
force_signal37_to_load_all_clients_of_firm
summit = Client.find_first("name = 'Summit'")
Please sign in to comment.
Something went wrong with that request. Please try again.