# Activerecord result set count

**URL:** <https://www.ruby-forum.com/t/activerecord-result-set-count/114114>\
**Category:** Rails\
**Created:** [September 8, 2007, 1:19am UTC](https://www.ruby-forum.com/t/activerecord-result-set-count/114114 "2007-09-08T01:19:01Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![chrispa](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/43a26b/32.png) [@chrispa](https://www.ruby-forum.com/u/chrispa)\
**Post date:** [September 8, 2007, 1:19am UTC](https://www.ruby-forum.com/t/activerecord-result-set-count/114114/1 "2007-09-08T01:19:01Z")

</div>

Hello all,

Can anyone clear this up for me?..

Example: 1 table, 1 record in table

> > result = Stuff.find(:all)

> > result.size

=\> 1

> > result = Stuff.find(1)

> > result.size

NoMethodError: undefined method `size’…blah blah

> > result = Stuff.find(:all, :conditions =\> ‘id =1’)

> > result.size

=\> 1

…I’m having troubles understanding this relationship (unless it’s a  
bug?) and it’s making it very frustrating if I want to use the same  
view to show a single or many records. I can get around it by using  
the :conditions as stated above but should I have to? Using…

> > result.count

NoMethodError: undefined method `count’…blah blah

…seems to have the same issues.

Can anyone shed some light on this? Sorry if it’s already been  
covered somewhere else I didn’t know how to exactly phrase my question  
without having to read through a hundred posts.

Thanks!

---

<div class="post-metadata">

**Author:** ![chrispa](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/43a26b/32.png) [@chrispa](https://www.ruby-forum.com/u/chrispa)\
**Post date:** [September 8, 2007, 3:10am UTC](https://www.ruby-forum.com/t/activerecord-result-set-count/114114/2 "2007-09-08T03:10:16Z")

</div>

Hi,

Model.find(:all) will return an array of results, even if there is only  
one matching record.

So, in your example:

result = Stuff.find(:all, :conditions =\> ‘id =1’)

Here, result is actually an array of 1 item.

The ‘size’ method is a method of the Array class in ruby, and will only  
work when the Model.find call returns an array.

So, as in your example again:

result = Stuff.find(1)

Here, result is simply an instance of the ‘Stuff’ class (i.e. the record  
with id=1). Therefore the ‘size’ method will not work because it is not  
a method of the ‘Stuff’ class.

Hope that helps.

~ Mark

---

<div class="post-metadata">

**Author:** ![chrispa](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/43a26b/32.png) [@chrispa](https://www.ruby-forum.com/u/chrispa)\
**Post date:** [September 8, 2007, 7:10am UTC](https://www.ruby-forum.com/t/activerecord-result-set-count/114114/3 "2007-09-08T07:10:25Z")

</div>

Yes!

…it does seem awkward to have to account for this in a separate way  
especially when rails is so great in other ways. 🙂

Thank you,

Chris

On Sep 7, 7:10 pm, Mark D. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)
