【问题标题】:skip validation after create mongoid rails创建 mongoid rails 后跳过验证
【发布时间】:2011-01-26 05:08:46
【问题描述】:

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

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

人有很多展示位置,展示位置属于个人 一个人只能有一个有效的展示位置

展示位置模型有一个验证,用于检查一个人在保存时是否已经有一个活动的展示位置。

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

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

现在第一次保存展示位置时,它会被保存。

现在问题来了

@person.placements << @placement

因为此人已经通过@placement.save 进行了有效的展示。

@person.placements

有什么方法可以让我告诉我不要在我的代码的############ 区域的某个地方进行特定的验证。

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

谢谢

【问题讨论】:

  • 如果它对您有用,您应该接受答案。给那个人他的分数。 :)

标签: ruby-on-rails validation skip


【解决方案1】:

你可以使用:save :validate => false

【讨论】:

  • 但是在使用 保存:validate => false?任何想法
  • 只需先保存展示位置(使用 validate false),然后将其添加到您的公司
【解决方案2】:

如果您想在所有验证通过后保存,那么首先要做的就是这样做

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

接下来的事情是,如果您使用的是 mongoid,那么 &lt;&lt; 运算符在两个文档上都调用 .save

解决方案可能是覆盖&lt;&lt;的mongoid,或者需要指定在哪个动作期间进行验证。

validates :placeholder, :on =&gt; :create与或

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多