题
我想在创建对象后跳过验证。让我们举个例子
人有许多公司,公司有很多人
人有许多人,安置属于人,只有一个主动安置
放置模型具有一个验证,可以检查一个人在保存时是否已经有活跃的位置。
@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
不隶属于 StackOverflow