Ruby on rails Rails获取在控制器中创建的新记录的id
我有工作计划,有很多工作任务。这些类似于模板。我想从中创建工作顺序和任务 这是jobplans控制器中的代码:Ruby on rails Rails获取在控制器中创建的新记录的id,ruby-on-rails,Ruby On Rails,我有工作计划,有很多工作任务。这些类似于模板。我想从中创建工作顺序和任务 这是jobplans控制器中的代码: def copy_to_workorder @jobplan = Jobplan.find(params[:id]) # find original jobplan wo_attrs = @jobplan.attributes wo_attrs.delete('woschedule_id') Workorder.create(wo_attrs) @jobplan
def copy_to_workorder
@jobplan = Jobplan.find(params[:id]) # find original jobplan
wo_attrs = @jobplan.attributes
wo_attrs.delete('woschedule_id')
Workorder.create(wo_attrs)
@jobplan.jobtasks.each do |jobtask|
jobtask_attrs = jobtask.attributes
jobtask_attrs.delete('jobplan_id')
jobtask_attrs.merge!({ workorder_id: @workorder.id })
Task.create(jobtask_attrs)
end
redirect_to @jobplan, notice: 'Project was successfully created.'
end
我的问题是@workorder为零。我需要每项新任务都参考工作顺序。如何访问新创建的工单的id
谢谢你的帮助 这样做:
def copy_to_workorder
@jobplan = Jobplan.find(params[:id]) # find original jobplan
wo_attrs = @jobplan.attributes
wo_attrs.delete('woschedule_id')
workorder = Workorder.create(wo_attrs)
# ^^^^^ saving the newly created record in a local variable
# so we can refer to it later
@jobplan.jobtasks.each do |jobtask|
jobtask_attrs = jobtask.attributes
jobtask_attrs.delete('jobplan_id')
jobtask_attrs.merge!(workorder_id: workorder.id)
# ^^^^^^ now fetch its id
Task.create(jobtask_attrs)
end
redirect_to @jobplan, notice: 'Project was successfully created.'
end
这样做:
def copy_to_workorder
@jobplan = Jobplan.find(params[:id]) # find original jobplan
wo_attrs = @jobplan.attributes
wo_attrs.delete('woschedule_id')
workorder = Workorder.create(wo_attrs)
# ^^^^^ saving the newly created record in a local variable
# so we can refer to it later
@jobplan.jobtasks.each do |jobtask|
jobtask_attrs = jobtask.attributes
jobtask_attrs.delete('jobplan_id')
jobtask_attrs.merge!(workorder_id: workorder.id)
# ^^^^^^ now fetch its id
Task.create(jobtask_attrs)
end
redirect_to @jobplan, notice: 'Project was successfully created.'
end
您从未实例化@workorder,也不需要实例变量。只要改变一下:
Workorder.create(wo_attrs)
到
然后
jobtask_attrs.merge!({ workorder_id: workorder.id })
GL&HF您永远不会实例化@workorder,也不需要实例变量。只要改变一下:
Workorder.create(wo_attrs)
到
然后
jobtask_attrs.merge!({ workorder_id: workorder.id })
GL&HF哇,你赢了我@Agis.哇,你赢了我@Agis.谢谢你的回答!谢谢你的回答!