提交 d9125093 编写于 作者: N Nicholas Seckar

Add AssociationCollection#sum since the method_missing invokation has been...

Add AssociationCollection#sum since the method_missing invokation has been shadowed by Enumerable#sum. Closes #5500.

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@4493 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
上级 99d268c8
*SVN*
* Add AssociationCollection#sum since the method_missing invokation has been shadowed by Enumerable#sum.
* Added find_or_initialize_by_X which works like find_or_create_by_X but doesn't save the newly instantiated record. [Sam Stephenson]
* Row locking. Provide a locking clause with the :lock finder option or true for the default "FOR UPDATE". Use the #lock! method to obtain a row lock on a single record (reloads the record with :lock => true). [Shugo Maeda]
......
......@@ -42,6 +42,11 @@ def delete_all
reset_target!
end
# Calculate sum using SQL, not Enumerable
def sum(*args, &block)
calculate(:sum, *args, &block)
end
# Remove +records+ from this association. Does not destroy +records+.
def delete(*records)
records = flatten_deeper(records)
......
......@@ -147,6 +147,10 @@ def test_should_calculate_grouped_by_function_with_table_alias
assert_equal 3, c['CLIENT']
assert_equal 2, c['FIRM']
end
def test_should_not_overshadow_enumerable_sum
assert_equal 6, [1, 2, 3].sum(&:abs)
end
def test_should_sum_scoped_field
assert_equal 15, companies(:rails_core).companies.sum(:id)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册