我想在创建对象后跳过验证。让我们举个例子

人有许多公司,公司有很多人

人有许多人,安置属于人,只有一个主动安置

放置模型具有一个验证,可以检查一个人在保存时是否已经有活跃的位置。

@placement is active placement
@employment.placement = @person

if @placement.save
  #################
  @person.placements << @placement
  @company.placements << @placement
end

现在,当第一次保存位置时,它就不会保存。

现在问题到了

@person.placements << @placement

由于该人已经通过 @placement.save拥有积极的位置。

@person.placements << @placement再次保存@placement,验证将验证错误发送给@placement对象。

有什么办法,以便我告诉不要在我的代码的########### ##########中进行一些特定验证。

或欢迎任何替代解决方案。

谢谢

有帮助吗?

解决方案

您可以使用:保存:validate => false

其他提示

第一件事如果您想在所有验证通过后保存,请执行这样的操作

if @placement.valid?
  @person.placements << @placement
  @company.placements << @placement
end

下一件事是,如果您使用的是杂种 << 操作员致电 .save 在两个文档上。

解决方案可以覆盖 << 牛角类似或需要刺激验证。

validates :placeholder, :on => :create 和或

if @placement.valid?
  @placement.person = @person
  @company.placements << @placement
end
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top