Forum: Ruby on Rails Q: find_by_x_id and named scopes

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
(Guest)
on 2009-02-22 11:44
(Received via mailing list)
Hi

I have a model Topic that has many Posts, and I'm trying to use a
named scope on my find

I can do something like this:

@posts = @topic.posts.named_scope_func

But I cannot do this:

@posts = Post.find_by_topic_id(1).named_scope_func

The reason is that the "posts" and "find_by_topic_id" seem to return
different classes (Post and Array)

Am I doing something wrong?

thanks
Gavin (Guest)
on 2009-02-22 13:12
(Received via mailing list)
Hey,

Named scopes generate a Class method. Looks like you're trying to call
one on an instance of Post (or an array with one Post in it)

You could try specifying the topic first and then calling
posts.named_scope

i.e.

@topic = Topic.find(1).posts.named_scope

Don't know any other way around this using named scopes I'm afraid

On Feb 22, 9:43 am, "removed_email_address@domain.invalid" 
<removed_email_address@domain.invalid>
Gavin (Guest)
on 2009-02-22 13:15
(Received via mailing list)
Hey,
Named scopes generate a Class method. Looks like you're trying to
call
one on an instance of Post (or an array with one Post in it).

Don't know any other way around this other than calling the class
method on Topic.posts.named_scope

Maybe @posts = Post.named_scope.all :conditions => {:topic_id => 1}


On Feb 22, 9:43 am, "removed_email_address@domain.invalid" 
<removed_email_address@domain.invalid>
This topic is locked and can not be replied to.