基本Rails 3使用关联对象保存父对象

时间:2011-06-23 03:35:46

标签: ruby-on-rails-3 associations

我有一个基本的rails问题,我需要保存两个相关的对象。

该协会是Rtake has_many:公司和公司所属: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。

我知道我遗漏了一些基本的东西。希望得到一些帮助。

2 个答案:

答案 0 :(得分:1)

你不应该需要这一行:

@company.rtake = @invitation

@invitation与您所展示的内容无关。

但是,当您构建@company时,@rtake.id未设置,因为它尚未保存。

答案 1 :(得分:0)

  

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

@rtake.companies.build(params[:company])这已经意味着@company.rtake == @rtake。这里很重要。