更改一条记录时,相关记录会被覆盖
Associated records get overwritten when changing one record
当我尝试编辑与 parent 记录相关联的一条记录的一列的值时(例如,工作有很多 Jobdetails),每条记录都会被覆盖,而不仅仅是这条记录。
例如:一个职位有很多职位详情。我希望能够编辑一个工作细节的 title
。当我保存记录时,它可以工作,但属于该工作的所有其他工作细节现在都具有相同的标题。新建记录没问题,就是编辑麻烦
型号
乔布斯 has_many :jobdetails
职位详情 belongs_to :job
路线
resources :jobs do
resources :jobdetails
end
Jobdetails_controller.rb
def edit
@job = Job.find(params[:job_id])
@jobdetail = Jobdetail.find(params[:id])
end
def update
@job = Job.find(params[:job_id])
@jobdetail.update(jobdetail_params)
respond_to do |format|
if @job.jobdetails.update(jobdetail_params)
format.html { redirect_to job_jobdetail_path(@job, @jobdetail), notice: 'Jobdetail was successfully updated.' }
else
format.html { render :edit }
format.json { render json: @jobdetail.errors, status: :unprocessable_entity }
end
end
end
def set_jobdetail
@job = Job.find(params[:job_id])
@jobdetail = Jobdetail.find(params[:id])
end
我认为 set_jobdetail 和编辑操作中的重复语法是不必要的。
我尝试了几种不同的语法,但它们都不起作用。提前致谢!
更新正在进行 "massive" 更新的行:
if @job.jobdetails.update(jobdetail_params)
做一个:
if @jobdetail.update(jobdetail_params)
使用 @job.jobdetails.update
,您将获得与@job 关联的所有工作详细信息,并使用 jobdetail_params 中的值更新所有这些详细信息。由于您已经初始化了要更新的特定作业详细信息 (@jobdetail = Jobdetail.find(params[:id])
),因此您必须对该对象调用 update
。
当我尝试编辑与 parent 记录相关联的一条记录的一列的值时(例如,工作有很多 Jobdetails),每条记录都会被覆盖,而不仅仅是这条记录。
例如:一个职位有很多职位详情。我希望能够编辑一个工作细节的 title
。当我保存记录时,它可以工作,但属于该工作的所有其他工作细节现在都具有相同的标题。新建记录没问题,就是编辑麻烦
型号
乔布斯 has_many :jobdetails
职位详情 belongs_to :job
路线
resources :jobs do
resources :jobdetails
end
Jobdetails_controller.rb
def edit
@job = Job.find(params[:job_id])
@jobdetail = Jobdetail.find(params[:id])
end
def update
@job = Job.find(params[:job_id])
@jobdetail.update(jobdetail_params)
respond_to do |format|
if @job.jobdetails.update(jobdetail_params)
format.html { redirect_to job_jobdetail_path(@job, @jobdetail), notice: 'Jobdetail was successfully updated.' }
else
format.html { render :edit }
format.json { render json: @jobdetail.errors, status: :unprocessable_entity }
end
end
end
def set_jobdetail
@job = Job.find(params[:job_id])
@jobdetail = Jobdetail.find(params[:id])
end
我认为 set_jobdetail 和编辑操作中的重复语法是不必要的。
我尝试了几种不同的语法,但它们都不起作用。提前致谢!
更新正在进行 "massive" 更新的行:
if @job.jobdetails.update(jobdetail_params)
做一个:
if @jobdetail.update(jobdetail_params)
使用 @job.jobdetails.update
,您将获得与@job 关联的所有工作详细信息,并使用 jobdetail_params 中的值更新所有这些详细信息。由于您已经初始化了要更新的特定作业详细信息 (@jobdetail = Jobdetail.find(params[:id])
),因此您必须对该对象调用 update
。