# Calculate method is gone once I use 'find'?

**URL:** <https://www.ruby-forum.com/t/calculate-method-is-gone-once-i-use-find/65095>\
**Category:** Rails\
**Created:** [August 16, 2006, 3:03am UTC](https://www.ruby-forum.com/t/calculate-method-is-gone-once-i-use-find/65095 "2006-08-16T03:03:46Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![cjnkns](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c5a1d2/32.png) [@cjnkns](https://www.ruby-forum.com/u/cjnkns)\
**Post date:** [August 16, 2006, 3:03am UTC](https://www.ruby-forum.com/t/calculate-method-is-gone-once-i-use-find/65095/1 "2006-08-16T03:03:46Z")

</div>

Could someone please explain why this works:

current\_user.accounts.sum(:balance)

But not this:

current\_user.accounts.find\_all\_by\_active(true).sum(:balance)

For the latter Rails tells me sum is an undefined method. It seems like  
I lose the ActiveRecord methods when I call ‘find’?

This (simpler) does not work either:

current\_user.accounts.find\_all.sum(:balance)

Thanks!

---

<div class="post-metadata">

**Author:** ![cjnkns](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c5a1d2/32.png) [@cjnkns](https://www.ruby-forum.com/u/cjnkns)\
**Post date:** [August 16, 2006, 3:55am UTC](https://www.ruby-forum.com/t/calculate-method-is-gone-once-i-use-find/65095/2 "2006-08-16T03:55:15Z")

</div>

One way:

Account.sum(:balance, :conditions =\> “user\_id = #{current\_user.id} AND  
active = true”)

another way:

Account.with\_scope(:find =\> “user\_id = #{current\_user.id} AND active =  
true”) do  
Account.sum(:balance)  
end

---

<div class="post-metadata">

**Author:** ![cjnkns](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c5a1d2/32.png) [@cjnkns](https://www.ruby-forum.com/u/cjnkns)\
**Post date:** [August 16, 2006, 3:55am UTC](https://www.ruby-forum.com/t/calculate-method-is-gone-once-i-use-find/65095/3 "2006-08-16T03:55:15Z")

</div>

Carl J. wrote:

> This (simpler) does not work either:
> 
> current\_user.accounts.find\_all.sum(:balance)

In the first case, you are calling the sum method on an ActiveRecord  
object.

In the second case, you are calling sum on an array of ActiveRecord  
objects and as the error message tells you, the sum method is not  
defined for Array objects.

The missing piece that you need to know is that when the finders return  
more than one ActiveRecord the results are returned in an array of  
ActiveRecords.

You should be able to rewrite your first query

current\_user.accounts.sum(:balance, :conditions =\> [‘active == ?’,  
true])

–

Ray

---

<div class="post-metadata">

**Author:** ![cjnkns](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c5a1d2/32.png) [@cjnkns](https://www.ruby-forum.com/u/cjnkns)\
**Post date:** [August 16, 2006, 4:21am UTC](https://www.ruby-forum.com/t/calculate-method-is-gone-once-i-use-find/65095/4 "2006-08-16T04:21:54Z")

</div>

Thanks, that helps!

> You should be able to rewrite your first query
> 
> current\_user.accounts.sum(:balance, :conditions =\> [‘active == ?’,  
> true])

One question - where would be the best place for the above as far as MVC  
goes? Directly in the view or should I be setting a variable to the  
above in the controller?
