Active Record associations question

Hi

Something I'm doing works magically in Rails and I'm trying to figure out how :slight_smile:

Lets say I have a Post model which has many Comments

Within my Comment model I have this:

def foo(title)   self.create(:title => "title") end

Then I do this: Post.find(4).foo("hello")

Rails creates a new Comment with a post_id of 6... How does it know to do this!? Where does it get the correct post_id from?

This has really been puzzling me.

Thanks a lot Ryan

Hi

Something I'm doing works magically in Rails and I'm trying to figure out how :slight_smile:

Lets say I have a Post model which has many Comments

Within my Comment model I have this:

def foo(title) self.create(:title => "title") end

Then I do this: Post.find(4).foo("hello")

Rails creates a new Comment with a post_id of 6... How does it know to do this!? Where does it get the correct post_id from?

I assume that you meant to type Post.find(6).comments.foo('hello') In general any class method on a model will be available as a scoped method on an association collection. The comments object is special: it's an association collection (not just a dumb) array, so it knows that it belongs to that particular instance of post. If it doesn't know how to handle a method, it will just pass it on to the class (here Comment) having previously scoped it (via with_scope)

Fred

Yeah, thats what I meant to type :slight_smile:

Thanks for the help