Ruby on rails 在运行时删除验证
下面我可以在运行时将验证成功添加到Mongoid:Ruby on rails 在运行时删除验证,ruby-on-rails,ruby,Ruby On Rails,Ruby,下面我可以在运行时将验证成功添加到Mongoid: class Abc include Mongoid::Document field :something, type: String end a = Abc.new a.valid? => true Abc.class_eval do validates_presence_of :something end => [Mongoid::Validatable::PresenceValidator] b =
class Abc
include Mongoid::Document
field :something, type: String
end
a = Abc.new
a.valid?
=> true
Abc.class_eval do
validates_presence_of :something
end
=> [Mongoid::Validatable::PresenceValidator]
b = Abc.new
=> #<Abc _id: 55948e466d616344a4010000, something: nil>
b.valid?
=> false
我想你会在这篇博文中找到你想要的: 基本上,验证器信息在类变量
\u validators
中,您可以调用skip\u callback
来取消它。因此,您应该能够用
validators = Abc._validators[:something]
v = validators.first
validators.delete v
filter = Abc._validate_callbacks.find { |c| c.raw_filter == v }.filter
skip_callback :validate, filter
validators = Abc._validators[:something]
v = validators.first
validators.delete v
filter = Abc._validate_callbacks.find { |c| c.raw_filter == v }.filter
skip_callback :validate, filter