Can't create has_one record


#1

Hello all. I have the following code in my Accounts controller:

@account = Account.create(params[:account])
@website = @account.websites.create(params[:website])
@contact = @account.contact.create(params[:contact])

My Account model has_one :contact and my Contact belongs_to :account,
yet I get the following error:

NoMethodError: You have a nil object when you didn’t expect it!
The error occurred while evaluating nil.create


I’ve scoured the documentation and can’t find where I’m mucking things
up. Any help is greatly appreciated!

-tb


#2

@account = Account.create(params[:account])

now you have new account - contact is empty

@account.contact is nil -> calling @account.contact.create is the same
as calling nil.create

try:

@account = Account.create(params[:account])
@account.contact = Contact.create(params[:contact])


#3

On Nov 12, 2008, at 5:29 PM, reHa wrote:

@account.contact = Contact.create(params[:contact])

On Nov 12, 11:10 pm, “T. B.” removed_email_address@domain.invalid wrote:

Hello all. I have the following code in my Accounts controller:

@account = Account.create(params[:account])
@website = @account.websites.create(params[:website])
@contact = @account.contact.create(params[:contact])

@contact = @account.create_contact(params[:contact])

things
up. Any help is greatly appreciated!

-tb

It’s right there in the docs for has_one. Compare to the similar
semantics for has_many associations that you’re obviously familiar with.

http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#M001385

-Rob

Rob B. http://agileconsultingllc.com
removed_email_address@domain.invalid