针对单个属性根据业务逻辑处理不同的错误消息

问题描述 投票:0回答:1

我在

entities
表中有一个名为
reporting_name
的属性。我需要根据不同站点的业务逻辑显示两个不同的错误消息。如果单个实体的验证失败,则错误消息应为“报告名称为空”。对于法人实体,应为“法定全名为空”。我正在使用 Rails 翻译来处理错误消息。实现这一点的最佳方法是什么?

# en.yml

activerecord:
    errors:
      models:
        entities:
          attributes:
            reporting_name:
              blank: 'Reporting Name is blank'

ruby-on-rails ruby-on-rails-5
1个回答
0
投票

您可以使用

:message
选项 (https://guides.rubyonrails.org/active_record_validations.html#message)

validates :attribute,
  presence: {message: ->(obj, data) { 1 == 2  ? "One message" : "Other message" } }

为了简单起见,我对消息字符串进行了硬编码,但您可能希望将其替换为 I18n 方法。

© www.soinside.com 2019 - 2024. All rights reserved.