gpt4 book ai didi

ruby-on-rails - 在运行时删除验证

转载 作者:数据小太阳 更新时间:2023-10-29 08:03:36 25 4
gpt4 key购买 nike

下面我可以在运行时成功地向 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

如何删除验证?如果可能的话,我假设 ActiveRecord 和 Mongoid 都是一样的。

我正在寻找这样的东西:

Abc.class_eval do
remove_validates_presence_of :something
end

最佳答案

我想您会在这篇博文中找到您想要的:http://gistflow.com/posts/749-canceling-validations-in-activerecord

基本上,验证器信息在类变量_validators中,您可以调用skip_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

关于ruby-on-rails - 在运行时删除验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31174150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com