Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > [OT maybe] ActiveRecord curious behaviour

Reply
Thread Tools

[OT maybe] ActiveRecord curious behaviour

 
 
Alexandru E. Ungur
Guest
Posts: n/a
 
      01-25-2007
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

 
Reply With Quote
 
 
 
 
David Goodlad
Guest
Posts: n/a
 
      01-25-2007
Hi Alex

On 1/25/07, Alexandru E. Ungur <(E-Mail Removed)> wrote:
> 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


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


--
Dave Goodlad
http://www.velocityreviews.com/forums/(E-Mail Removed) or (E-Mail Removed)
http://david.goodlad.ca/

 
Reply With Quote
 
 
 
 
Alexandru E. Ungur
Guest
Posts: n/a
 
      01-26-2007
>>> sender: "David Goodlad" 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

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Curious behaviour of Tkinter object zefciu Python 0 03-10-2007 09:36 PM
curious behaviour in virtual destructor inside base class LAvoisieR C++ 8 10-27-2005 07:40 PM
curious about slice behaviour Stephan Diehl Python 2 09-05-2005 06:41 PM
Curious Word behaviour Philip SC Computer Support 2 09-16-2003 12:41 AM
A curious behaviour with an URL on the W3C Griffure Firefox 0 08-11-2003 11:46 AM



Advertisments