Permalink
Browse files

Merge pull request #14992 from fredwu/habtm_relation_size_calculation…

…_fix

Habtm relation size calculation fix. Fixes #14913, Fixes #14914.

Conflicts:
	activerecord/CHANGELOG.md
  • Loading branch information...
carlosantoniodasilva committed May 8, 2014
1 parent 007b1e6 commit afb44f46c7b6a807ed17f504546256382c019fcc
@@ -1,3 +1,12 @@
+* Fixed HABTM's CollectionAssociation size calculation.
+
+ HABTM should fall back to using the normal CollectionAssociation's size
+ calculation if the collection is not cached or loaded.
+
+ Fixes #14913 and #14914.
+
+ *Fred Wu*
+
* Keep track of dirty attributes after transaction is rollback.
Related #13166.
@@ -22,7 +22,7 @@ def size
elsif loaded?
target.size
else
- count
+ super
end
end
@@ -217,6 +217,24 @@ def test_habtm_unique_order_preserved
assert_equal developers(:poor_jamis, :jamis, :david), projects(:active_record).developers
end
+ def test_habtm_collection_size_from_build
+ devel = Developer.create("name" => "Fred Wu")
+ devel.projects << Project.create("name" => "Grimetime")
+ devel.projects.build
+
+ assert_equal 2, devel.projects.size
+ end
+
+ def test_habtm_collection_size_from_params
+ devel = Developer.new({
+ projects_attributes: {
+ '0' => {}
+ }
+ })
+
+ assert_equal 1, devel.projects.size
+ end
+
def test_build
devel = Developer.find(1)
proj = assert_no_queries { devel.projects.build("name" => "Projekt") }
@@ -13,6 +13,8 @@ def find_most_recent
end
end
+ accepts_nested_attributes_for :projects
+
has_and_belongs_to_many :projects_extended_by_name,
-> { extending(DeveloperProjectsAssociationExtension) },
:class_name => "Project",

0 comments on commit afb44f4

Please sign in to comment.