2011-06-23 62 views
0

我有一個基本的導軌問題,我需要保存兩個關聯的對象。基本導軌3使用關聯對象保存父對象

該協會是Rtake的has_many:公司及公司belongs_to的:rtake

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 

在我company.rb類我有

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爲零從你出什麼。

但是,當您構建@company時,@rtake.id未設置,因爲它尚未保存。

+0

對不起,這是我的一個錯字,我更新了代碼。 – Sid

0

@company = @ rtake.companies.build(PARAMS [:公司])
@ company.rtake = @rtake

@rtake.companies.build(params[:company])這已經意味着@company.rtake == @rtake。它在這裏是redundent。