将通用(未绑定到键或字段)错误消息添加到 rails FormObject



我有以下 ruby 类:

class MyFormObject < FormObject
attribute :some_field
validates :some_field, presence: true
validate :my_custom_validation
def my_custom_validation
errors.add "Do_not_have_key","This error message is self contained, not linked to any field and no field prefix required"
end
end

我想执行我的自定义验证逻辑。将错误添加到错误集合,但其中一些错误未绑定到任何键或字段。假设它们取决于执行验证时的月球位置:)

我也希望当其他人使用我的类并调用时:

errors.full_messages

要获得在所有错误前面附加错误键的默认行为,请期待"泛型"/"未绑定到字段"的键。

有没有优雅的方式来实现这种行为?并关闭此类中的任何解决方案/解决方法,并且所有消费者都不知道存在"特殊"错误?

根据 Rails 文档,这里: https://guides.rubyonrails.org/active_record_validations.html#errors-base

您可以将与对象状态相关的错误消息添加为 整体,而不是与特定属性相关。您可以使用 此方法,当你想说对象无效时,不管 其属性的值。由于 errors[:base] 是一个数组,你可以 只需向其添加一个字符串,它就会被用作错误消息。

因此,在您的情况下,您的验证器变为:

def my_custom_validation
errors[:base] << "Your error message here."
end

相关内容

最新更新