更改一条记录时,相关记录会被覆盖

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