I have controllers for two models between which there exists a
belongs_to/has_one relationship.
How do I reference the parent model object in the child controller so
that I can later recover the child object in the parent controller,
i.e., create and “attach” the child to the parent model for later
recovery?
I would have guessed it was something like as follows:
class ChildController…
def create @parent = ParentModel.find(params[:id]) # How to get “current”
parent from database? @parent.child = ChildModel.new(params[:child])
…
I have controllers for two models between which there exists a
belongs_to/has_one relationship.
How do I reference the parent model object in the child controller so
that I can later recover the child object in the parent controller,
i.e., create and “attach” the child to the parent model for later
recovery?
If you have your associations set up properly, this is automatic.
I have controllers for two models between which there exists a
belongs_to/has_one relationship.
How do I reference the parent model object in the child controller so
that I can later recover the child object in the parent controller,
i.e., create and “attach” the child to the parent model for later
recovery?
I would have guessed it was something like as follows:
class ChildController…
def create @parent = ParentModel.find(params[:id]) # How to get “current”
parent from database?
Don’t bother finding the parent model if you already have the ID.
That’s an extra query for no reason in most cases.
@parent.child = ChildModel.new(params[:child])
Oh, on second reading, I see what you’re asking. Check out nested
resources and accepts_nested_attributes_for. Also read the Rails guide
on associations if you haven’t already.
…
Any thoughts?
Yes, try it before you ask! Rails makes this simple.