gpt4 book ai didi

ruby-on-rails - 如果验证失败,Rails 会跳过其他验证

转载 作者:行者123 更新时间:2023-12-04 06:10:02 26 4
gpt4 key购买 nike

我需要 Rails ActiveRecord 验证方面的帮助。

我有一个模型,在不同领域进行了一些验证:

class MyModel < ActiveRecord::Base
validate :custom_validation
validates :field1, :field2, presence: true
validates :field3, uniqueness: true

def custom_validation
# if condition
# errors.add(:field4, 'error message')
# end
end
end

如果 custom_validation 失败,我需要跳过对 field1、field2、field3 的验证。
我知道我可以这样做只是为 field1、field2 和 field3 的验证添加条件:
validates: field1, field2, presence: true, if: custom_validation

然而,这个解决方案在我看来有点难看,我想要更干燥的东西。是否可以?

我很感激任何帮助!

最佳答案

如果不覆盖内置的 Rails 验证,我真的不知道您将如何做到这一点。关键是验证是在类加载时声明的,而不是在实例中声明的。

使用 if: :custom_validation 的替代方法在您的所有验证中可能会覆盖 valid?方法并删除其他键的错误:

def valid?(context = nil)
super
if errors.key?(:field4)
errors.keys.each {|k| errors.delete(k) unless k == :field4 }
end
errors.empty?
end

关于ruby-on-rails - 如果验证失败,Rails 会跳过其他验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34228530/

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