# ActiveRecord curious behaviour

**URL:** <https://www.ruby-forum.com/t/activerecord-curious-behaviour/83391>\
**Category:** Ruby\
**Created:** [January 25, 2007, 6:53pm UTC](https://www.ruby-forum.com/t/activerecord-curious-behaviour/83391 "2007-01-25T18:53:29Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Alexandru\_ESUngur](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/b5e925/32.png) [@Alexandru\_ESUngur](https://www.ruby-forum.com/u/Alexandru_ESUngur)\
**Post date:** [January 25, 2007, 6:53pm UTC](https://www.ruby-forum.com/t/activerecord-curious-behaviour/83391/1 "2007-01-25T18:53:29Z")

</div>

Hi all,

I appologise if this question is offtopic, hopefully it isn’t though…

I have:  
Forum has\_many :comments

so obviously, I access the comments collection as  
some\_forum.comments

check its type with:  
some\_forum.comments.class # =\> Array

ok, that I expected, so I want to use Array#find on it, right?  
some\_forum.comments.find {…}

but oops, I get:  
ActiveRecord::RecordNotFound: Couldn’t find Comment without an ID

Hmm, that find is not the find I expected to find 😉 Looks like  
an AR#find to me… but on an Array? It’s not like I need SQL to  
find certain elements of an Array… so I find this behaviour very  
interesting. Am I doing something wrong here ? I can find the  
element(s) I want from it, by iterating over it and selecting them,  
but not by using find.

BTW, it’s Rails 1.1.6/AR 1.14.4 I’m having this behaviour on, haven’t  
tested it on other versions.

Thank you in advance,  
Alex

---

<div class="post-metadata">

**Author:** ![Alexandru\_ESUngur](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/b5e925/32.png) [@Alexandru\_ESUngur](https://www.ruby-forum.com/u/Alexandru_ESUngur)\
**Post date:** [January 26, 2007, 12:17am UTC](https://www.ruby-forum.com/t/activerecord-curious-behaviour/83391/2 "2007-01-26T00:17:34Z")

</div>

Hi Alex

On 1/25/07, Alexandru E. Ungur [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> check its type with:  
> find certain elements of an Array… so I find this behaviour very  
> interesting. Am I doing something wrong here ? I can find the  
> element(s) I want from it, by iterating over it and selecting them,  
> but not by using find.
> 
> BTW, it’s Rails 1.1.6/AR 1.14.4 I’m having this behaviour on, haven’t  
> tested it on other versions.
> 
> Thank you in advance,  
> Alex

It would probably be ore appropriate to ask this on the rails-users  
mailing list, rather than this one.

However, here’s why you’re seeing this behavior. An AR association,  
when accessed, returns a proxy object that looks like an Array, but  
has some extra methods: ‘find’, ‘build’, etc. For example:

comments = some\_forum.comments  
comments.class # =\> Array  
comments.build :foo =\> ‘bar’ # :build is obviously not a method on Array

If you want to use Array#find or Array#find\_all on an AssociationProxy  
object, you can call #detect and #select instead.

Dave

---

<div class="post-metadata">

**Author:** ![Alexandru\_ESUngur](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/b5e925/32.png) [@Alexandru\_ESUngur](https://www.ruby-forum.com/u/Alexandru_ESUngur)\
**Post date:** [January 26, 2007, 9:56am UTC](https://www.ruby-forum.com/t/activerecord-curious-behaviour/83391/3 "2007-01-26T09:56:25Z")

</div>

> > > sender: “David G.” date: “Fri, Jan 26, 2007 at 08:16:30AM +0900” \<\<\<EOQ  
> > > Hi,

> It would probably be ore appropriate to ask this on the rails-users  
> mailing list, rather than this one.  
> Ok then, sorry for the noise, and a warm thank you for the  
> explanation 🙂

Have a nice day everyone,  
Alex
