Q: find_by_x_id and named scopes


#1

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


#2

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


#3

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