2011-06-23 13 views
0

2つの関連するオブジェクトを保存する必要がある基本的なレール問題があります。基本的なレール3関連付けオブジェクトを持つ親オブジェクトの保存

関連がRtakeのhas_manyのである:belongs_toの企業や会社:私のcompany.rbクラスで

def create 
    @rtake = RTake.new(:email => params[:contact_email]) 
    @rtake.role = "PROVIDER" 

    @company = @rtake.companies.build(params[:company]) 
    @company.rtake = @rtake 

    respond_to do |format| 
    if @company.save_company_and_rtake    
     format.html{ redirect_to admin_companies_url} 
    else 
     flash.now[:errors] = @company.errors.full_messages.join(", ") 
     format.html{ render "new" } 
    end 
    end 
end 

をrtakeは私が

def save_company_and_rtake 
    status1 = self.save(:validate => false)  
    status2 = self.rtake.save(:validate => false)  
    status = status1 && status2 
    status 
end 

を持って、私が直面している問題はcompany.rtake_idがnil残っていることです。理想的には、company.rtake_idが保存後に@ rtake.idに更新されるべきではありません。

私は何か基本的なものが欠けていることを知っています。助けていただければ幸いです。

答えて

1

あなたは、この行は必要ありません。

@company.rtake = @invitation 

@invitationはあなたが示されてきたものから、nilです。

また、@companyをビルドしたときには、@rtake.idは保存されていないため設定されていません。

+0

ご迷惑をおかけして申し訳ございませんが、私はコードを更新しました。 – Sid

0

@company = @ rtake.companies.build(のparams [:会社])
@ company.rtake = @rtake

@rtake.companies.build(params[:company])これはすでに@company.rtake == @rtakeを意味します。ここでは冗長です。

関連する問題