# Newbie Question: multiple models - need ID from one table to

**URL:** <https://www.ruby-forum.com/t/newbie-question-multiple-models-need-id-from-one-table-to/80132>\
**Category:** Rails\
**Created:** [December 21, 2006, 5:00pm UTC](https://www.ruby-forum.com/t/newbie-question-multiple-models-need-id-from-one-table-to/80132 "2006-12-21T17:00:41Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![walksalong](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/4491bb/32.png) [@walksalong](https://www.ruby-forum.com/u/walksalong)\
**Post date:** [December 21, 2006, 5:00pm UTC](https://www.ruby-forum.com/t/newbie-question-multiple-models-need-id-from-one-table-to/80132/1 "2006-12-21T17:00:41Z")

</div>

Hello,

I am creating a new record in my Elements table and that is pretty  
straight forward. But I need to add an ID to the Elements table that  
comes from another model - Pages. How can I create a record in the  
Pages table and then use its ID to populate the Elements table?

I was trying something like this in the ElementsController:

def create  
@page = Page.new(params[:page])  
@element = Element.new(params[:element])  
if @element.save  
flash[:notice] = ‘{@element.type.capitalize} was successfully  
created.’  
flash[:inform] = true;  
render :partial =\> show  
end  
end

But no luck so far - any ideas?

Thanks!

---

<div class="post-metadata">

**Author:** ![walksalong](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/4491bb/32.png) [@walksalong](https://www.ruby-forum.com/u/walksalong)\
**Post date:** [December 21, 2006, 5:34pm UTC](https://www.ruby-forum.com/t/newbie-question-multiple-models-need-id-from-one-table-to/80132/2 "2006-12-21T17:34:08Z")

</div>

I’m not sure I’m understanding this properly , but I think this should  
work:

@page = Page.new( params[:page] )  
if @page.save  
@element = Element.new( params[:element] )  
@element.page\_id = @page.id  
if @element.save  
# do something  
else  
# element did not save, do something else  
else

# Page did not save

end

---

<div class="post-metadata">

**Author:** ![walksalong](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/4491bb/32.png) [@walksalong](https://www.ruby-forum.com/u/walksalong)\
**Post date:** [December 21, 2006, 5:38pm UTC](https://www.ruby-forum.com/t/newbie-question-multiple-models-need-id-from-one-table-to/80132/3 "2006-12-21T17:38:48Z")

</div>

Walksalong wrote:

> I need to add an ID to the Elements table that  
> comes from another model - Pages. How can  
> I create a record in the Pages table and then use  
> its ID to populate the Elements table?

> def create  
> @page = Page.new(params[:page])  
> @page.save # it won’t have an id until it’s saved  
> @element = Element.new(params[:element])  
> @element.page\_id = @page.id  
> if @element.save  
> flash[:notice] = ‘{@element.type.capitalize} was successfully  
> created.’  
> flash[:inform] = true;  
> render :partial =\> show  
> end  
> end

hth,  
Bill

---

<div class="post-metadata">

**Author:** ![walksalong](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/4491bb/32.png) [@walksalong](https://www.ruby-forum.com/u/walksalong)\
**Post date:** [December 21, 2006, 5:42pm UTC](https://www.ruby-forum.com/t/newbie-question-multiple-models-need-id-from-one-table-to/80132/4 "2006-12-21T17:42:49Z")

</div>

Sorry, I meant:

@page = Page.new( params[:page] )  
if @page.save  
@element = Element.new( params[:element] )  
@page = Page.find( :last, :conditions =\> “title = #{@page.title}” )  
@element.page\_id = @page.id  
if @element.save  
# do something  
else  
# element did not save, do something else  
else

# Page did not save

end

---

<div class="post-metadata">

**Author:** ![walksalong](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/4491bb/32.png) [@walksalong](https://www.ruby-forum.com/u/walksalong)\
**Post date:** [December 21, 2006, 6:00pm UTC](https://www.ruby-forum.com/t/newbie-question-multiple-models-need-id-from-one-table-to/80132/5 "2006-12-21T18:00:56Z")

</div>

Also, if the page title is not unique, you could try adding a created\_on  
field to the page table and then selecting only pages which have been  
created in the last minute with the same title.

* * *

[matt-beedle.com](http://www.matt-beedle.com)

best-mobile-phones.org

---

<div class="post-metadata">

**Author:** ![walksalong](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/4491bb/32.png) [@walksalong](https://www.ruby-forum.com/u/walksalong)\
**Post date:** [December 21, 2006, 5:41pm UTC](https://www.ruby-forum.com/t/newbie-question-multiple-models-need-id-from-one-table-to/80132/6 "2006-12-21T17:41:12Z")

</div>

ok, so how about this?

@page = Page.new( params[:page] )  
if @page.save  
@element = Element.new( params[:element] )  
@page = Page.find( :last, @page.title )  
@element.page\_id = @page.id  
if @element.save  
# do something  
else  
# element did not save, do something else  
else

# Page did not save

end

---

<div class="post-metadata">

**Author:** ![walksalong](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/4491bb/32.png) [@walksalong](https://www.ruby-forum.com/u/walksalong)\
**Post date:** [December 21, 2006, 7:37pm UTC](https://www.ruby-forum.com/t/newbie-question-multiple-models-need-id-from-one-table-to/80132/7 "2006-12-21T19:37:06Z")

</div>

Thanks Matt! I’ll try that now…

On Dec 21, 12:00 pm, Matt B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![walksalong](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/4491bb/32.png) [@walksalong](https://www.ruby-forum.com/u/walksalong)\
**Post date:** [December 21, 2006, 8:53pm UTC](https://www.ruby-forum.com/t/newbie-question-multiple-models-need-id-from-one-table-to/80132/8 "2006-12-21T20:53:31Z")

</div>

Is this line really needed?  
@page = Page.find( :last, :conditions =\> “title = #{@page.title}” )

@page already exists and should respond to @page.id and you will save a  
search on the database.

–ABS

---

<div class="post-metadata">

**Author:** ![walksalong](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/4491bb/32.png) [@walksalong](https://www.ruby-forum.com/u/walksalong)\
**Post date:** [December 21, 2006, 8:57pm UTC](https://www.ruby-forum.com/t/newbie-question-multiple-models-need-id-from-one-table-to/80132/9 "2006-12-21T20:57:33Z")

</div>

Both work – Thanks!
