gpt4 book ai didi

ruby-on-rails - 报告记录验证警告和错误的有效方法?

转载 作者:行者123 更新时间:2023-12-03 12:54:38 25 4
gpt4 key购买 nike

我有一个 Rails 项目,与大多数应用程序一样,我们有许多严格的验证规则,所有对象在持久化之前都必须遵守这些规则。当然,ActiveModel 的验证非常适合——我们使用 Rails 默认值和我们自己的手动验证的组合。

但是,我们越来越多地遇到一些用例,我们希望提醒用户注意,虽然他们的数据在最严格的意义上不是无效的,但有些元素他们应该审查,但不应该本身可以防止记录持久性的发生。几个例子,我的头顶:

  • 帖子标题已全部大写,可能有效但可能不是
  • 一段正文比建议的字数少或多的 x 个字数多于

  • 验证模块是我们如何处理验证错误的一个很好的比喻——并且已经有很多匹配器可用——理想情况下,我希望能够重用该基本代码,但要生成 warnings 的集合 errors 旁边的项目.这将使我们能够以不同的方式向用户突出这些案例,而不是暗示可能违反房屋风格的行为等同于更令人震惊的、严格执行的规则。

    我看过 gem ,例如 activemodel-warnings ,但它们通过更改在验证记录时检查哪些匹配器、扩展或缩小 errors 来工作。相应地收集。同样,我查看了内置的 :on验证参数以查看我是否可以手动滚动某些内容,但是所有违规行为都会再次出现在错误集合中,而不是被分离出来。

    有没有人尝试过类似的东西?我无法想象我是唯一一个想要实现这个目标的人,但现在我正在画一个空白......

    最佳答案

    多年后,但在较新的 Rails 版本中,有一种更简单的方法:

      attr_accessor :save_despite_warnings

    def warnings
    @warnings ||= ActiveModel::Errors.new(self)
    end

    before_save :check_for_warnings
    def check_for_warnings
    warnings.add(:notes, :too_long, count: 120) if notes.to_s.length > 120

    !!save_despite_warnings
    end

    然后你可以这样做: record.warnings.full_messages

    关于ruby-on-rails - 报告记录验证警告和错误的有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24628628/

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