gpt4 book ai didi

ruby-on-rails - ActiveRecord 验证...自定义字段名称

转载 作者:行者123 更新时间:2023-12-04 07:29:16 24 4
gpt4 key购买 nike

我想修复我的网站生成的一些错误消息。这是问题所在:

class Brand < ActiveRecord::Base
validates_presence_of :foo
...
end

我的目标是发出一条消息“需要票证描述”而不是“需要 Foo”或者可能不是空白,或者其他什么。

之所以如此重要,是因为假设之前该字段是 ticket_summary。那太棒了,服务器被编码为使用它,但现在由于疯狂的商业分析师,已经确定 ticket_summary 是一个糟糕的名字,应该是 ticket_description。现在我不一定想让我的数据库由用户对字段名称的要求驱动,特别是因为它们可以在不更改功能的情况下频繁更改。

是否已经有提供此功能的机制?

澄清

:message => 似乎不是正确的解决方案,:message 会给我“Foo [message]”作为错误,我希望更改消息生成的字段名称,而不是实际的消息本身(虽然我将满足于必须改变整个事情)。

最佳答案

将此添加到您的 config/locales/en.yml 文件:

en:
activerecord:
errors:

# global message format
format: #{message}

full_messages:
# shared message format across models
foo:
blank: Ticket description is required

# model specific message format
brand:
zoo:
blank: Name is required

现在更改您的验证消息以引用新的消息格式:

validates_presence_of :bar, :message => "Empty bar is not a good idea"
validates_presence_of :foo, :message => "foo.blank"
validates_presence_of :zoo, :message => "brand.zoo.blank"

让我们试试代码:

b = Brand.new
b.valid?
b.errors.full_messages
#=> ["Ticket description is required",
# "Empty bar is not a good idea",
# "Name is required"]

如上所示,您可以在三个级别自定义错误消息格式。

1) 全局的所有 ActiveRecord 错误信息

  activerecord:
errors:
format: #{message}

2) 跨模型共享错误消息

  activerecord:
errors:
full_messages:
foo:
blank: Ticket description is required

3) 模型特定消息

  activerecord:
errors:
full_messages:
brand:
zoo:
blank: Name is required

关于ruby-on-rails - ActiveRecord 验证...自定义字段名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2521383/

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