# Retrieving Count (\*)

**URL:** <https://www.ruby-forum.com/t/retrieving-count/171619>\
**Category:** Rails\
**Created:** [July 6, 2009, 6:19pm UTC](https://www.ruby-forum.com/t/retrieving-count/171619 "2009-07-06T18:19:49Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![railslist](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/65b543/32.png) [@railslist](https://www.ruby-forum.com/u/railslist)\
**Post date:** [July 6, 2009, 6:19pm UTC](https://www.ruby-forum.com/t/retrieving-count/171619/1 "2009-07-06T18:19:49Z")

</div>

I have a find statement in my controller like the following:

@c = Model.find(:all, :select=\>“count(\*) as total”, :conditions=\>[some  
conditions])

This returns some value or “0” (if none found).

How do I retrieve this returned value?. I tried something like

@c.total but it says unknown attribute.

---

<div class="post-metadata">

**Author:** ![railslist](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/65b543/32.png) [@railslist](https://www.ruby-forum.com/u/railslist)\
**Post date:** [July 6, 2009, 6:24pm UTC](https://www.ruby-forum.com/t/retrieving-count/171619/2 "2009-07-06T18:24:22Z")

</div>

You have to use .size

not .total

On Mon, Jul 6, 2009 at 6:19 PM, Rails L.  
\<removed\_email\_address@domain.invalid

---

<div class="post-metadata">

**Author:** ![railslist](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/65b543/32.png) [@railslist](https://www.ruby-forum.com/u/railslist)\
**Post date:** [July 6, 2009, 6:29pm UTC](https://www.ruby-forum.com/t/retrieving-count/171619/3 "2009-07-06T18:29:52Z")

</div>

Sergio A. wrote:

> You have to use .size
> 
> not .total
> 
> On Mon, Jul 6, 2009 at 6:19 PM, Rails L.  
> \<removed\_email\_address@domain.invalid

Size doesn’t tell you the returned value. it just tells you the array  
length/size. What I need is the mysql returned value. In this case it  
would be the value of “count(\*)”

---

<div class="post-metadata">

**Author:** ![railslist](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/65b543/32.png) [@railslist](https://www.ruby-forum.com/u/railslist)\
**Post date:** [July 6, 2009, 6:35pm UTC](https://www.ruby-forum.com/t/retrieving-count/171619/4 "2009-07-06T18:35:28Z")

</div>

Use the ActiveRecord::Calculations::Class Methods

i.e. Model.count(:conditions =\> “…”)

(look it up on [api.rubyonrails.org](http://api.rubyonrails.org) for more details)

On Jul 6, 9:29 am, Rails L. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![railslist](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/65b543/32.png) [@railslist](https://www.ruby-forum.com/u/railslist)\
**Post date:** [July 6, 2009, 6:44pm UTC](https://www.ruby-forum.com/t/retrieving-count/171619/5 "2009-07-06T18:44:14Z")

</div>

Your @c is an array, so @c.first.total should work

Although, if you just want the size along, Model.count would be the  
best way to go as per E. Litwin suggestion.

On Jul 7, 12:29 am, Rails L. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![railslist](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/65b543/32.png) [@railslist](https://www.ruby-forum.com/u/railslist)\
**Post date:** [July 7, 2009, 7:20am UTC](https://www.ruby-forum.com/t/retrieving-count/171619/6 "2009-07-07T07:20:25Z")

</div>

Thanks a lot for all the replies. I’ll go with Model.count

I just realised “@c[0].total” also works.

---

<div class="post-metadata">

**Author:** ![railslist](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/65b543/32.png) [@railslist](https://www.ruby-forum.com/u/railslist)\
**Post date:** [July 6, 2009, 6:49pm UTC](https://www.ruby-forum.com/t/retrieving-count/171619/7 "2009-07-06T18:49:30Z")

</div>

s/along/alone
