将自定义选项传递给 .save Rails 以跳过验证

nbb*_*nbb 1 validation model ruby-on-rails skip

我希望在尝试保存时将逻辑传递给模型以禁用特定验证。

我知道其他解决方案,例如这个:跳过模型中的某些验证方法 这涉及在我想避免的模型上放置一个临时属性。

我宁愿有一个最终看起来像这样的解决方案:

@my_model.save(:skip_name_validation => true)
Run Code Online (Sandbox Code Playgroud)

^ Rails 3 中可能有这样的事情吗?

Hie*_*ham 5

当然,你可以通过执行以下技巧来做到这一点:

class YourModel
  attr_accessor :skip_name_validation
  validate :validate_method, unless: :skip_name_validation
end
Run Code Online (Sandbox Code Playgroud)

现在你可以像这样使用它:

@my_model.save(:skip_name_validation => true)
Run Code Online (Sandbox Code Playgroud)