我有一个基本的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。
我知道我遗漏了一些基本的东西。希望得到一些帮助。
答案 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
。这里很重要。