Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在运行时删除验证_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 在运行时删除验证

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 =

下面我可以在运行时将验证成功添加到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 = 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