Skip to content
Browse files

Ensure AssociationCollection#size considers all unsaved record. [#305

…state:resolved] [sds]

Signed-off-by: Pratik Naik <pratiknaik@gmail.com>
  • Loading branch information...
1 parent 67d5ac9 commit 25ce6886b2608c3d69f379d6ca38802476836504 @lifo lifo committed Jul 2, 2008
View
2 activerecord/lib/active_record/associations/association_collection.rb
@@ -187,7 +187,7 @@ def size
if @owner.new_record? || (loaded? && !@reflection.options[:uniq])
@target.size
elsif !loaded? && !@reflection.options[:uniq] && @target.is_a?(Array)
- unsaved_records = Array(@target.detect { |r| r.new_record? })
+ unsaved_records = @target.select { |r| r.new_record? }
unsaved_records.size + count_records
else
count_records
View
7 activerecord/test/cases/associations/has_many_associations_test.rb
@@ -384,6 +384,13 @@ def test_build
assert_equal 2, company.clients_of_firm(true).size
end
+ def test_collection_size_after_building
+ company = companies(:first_firm) # company already has one client
+ company.clients_of_firm.build("name" => "Another Client")
+ company.clients_of_firm.build("name" => "Yet Another Client")
+ assert_equal 3, company.clients_of_firm.size
+ end
+
def test_build_many
company = companies(:first_firm)
new_clients = assert_no_queries { company.clients_of_firm.build([{"name" => "Another Client"}, {"name" => "Another Client II"}]) }

0 comments on commit 25ce688

Please sign in to comment.
Something went wrong with that request. Please try again.