Ruby on rails 在生成情况下验证属于关联

Ruby on rails 在生成情况下验证属于关联,ruby-on-rails,validation,belongs-to,Ruby On Rails,Validation,Belongs To,我有一个任务模型,有很多任务,任务属于任务 为了安全起见,我对任务模型进行了以下验证: validates_presence_of :mission_id validates_numericality_of :mission_id 但问题是,当创建任务并添加如下任务时: @mission.tasks.build 验证返回错误,因为任务上的任务id为空(任务尚未创建) 如果我删除了验证,任务和任务就成功创建了,但是我如何保持验证并继续工作呢? 我可以在保存后进行回调,但我认为这不对,

我有一个任务模型,有很多任务,任务属于任务

为了安全起见,我对任务模型进行了以下验证:

  validates_presence_of :mission_id
  validates_numericality_of :mission_id
但问题是,当创建任务并添加如下任务时:

 @mission.tasks.build
验证返回错误,因为任务上的任务id为空(任务尚未创建)

如果我删除了验证,任务和任务就成功创建了,但是我如何保持验证并继续工作呢? 我可以在保存后进行回调,但我认为这不对,因为我不想在没有任务id的情况下保存任务

附言。 我把我的任务区藏在表格上。如果我能看到它,它会显示当前任务,一切正常。但是如果我把它藏起来,错误就会发生

<%=  f.hidden_field :mission, :label => "Missão" %>
“Missão”%%>

表单是否正在重置控制器在新操作上给定的属性?

验证嵌套属性时,应执行以下验证:

 validates_associated   :mission

在Mission.rb中使用以下命令

has_many :tasks
validates_associated :task
Task.rb

belongs_to :mission
内部控制器

@mission=Mission.new(params[:mission])  
task= @mission.tasks.build(params[:task]) ###this is same as Task.new(:mission_id=>@mission.id)

if @mission.save #this will save only when mission as well as task are valids, also it will automatically assign mission_id to tasks table you have nothing to worry about it<br>
else
    #your error code will be here.......
end
@mission=mission.new(参数[:mission])
task=@mission.tasks.build(params[:task])####这与task.new(:mission_id=>@mission.id)相同
如果@mission.save#这将仅在任务和任务有效时保存,并且它将自动将任务id分配给任务表,您无需担心
其他的 #您的错误代码将出现在这里。。。。。。。 结束
参考:-