gpt4 book ai didi

ruby-on-rails - rails 中有效数字的自定义错误消息

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

我想为我的字段名称提供自定义错误消息。我偶然发现了另一个 SO question

所以我添加了这样的东西:

class Product < ActiveRecord::Base
validate do |prod|
prod.errors.add_to_base("Product price can't be blank") if prod.prod_price.blank?
end
end

但我也想检查 prod_price 的数量。如果我只是添加 validate_numericality_of :prod_price并且产品价格为空,则显示两个错误消息(空且不是数字)。

仅当产品价格不为空时,如何才显示“不是数字”错误消息?

我试着做
class Product < ActiveRecord::Base
validate do |prod|
prod.errors.add_to_base("Product price can't be blank") if prod.prod_price.blank?
if !prod.prod_price.blank?
prod.errors.add_to_base("Product price must be a number") if prod.prod_price.<whatdo i put here>
end
end
end

另外,我怎样才能有“不是数字”的自定义消息。我想隐藏向用户显示我的列名。

最佳答案

currently accepted answer可以,但这里有一种使用 Rails 的 i18n 的数据驱动方式:

添加 allow_blank: truevalidates_numericality_of会处理空的问题。

然后,您可以使用 i18n 自动为您翻译属性名称(文档 here)。
对于 prod_price您只需将其添加到 en.yml :

en:
activerecord:
attributes:
product:
prod_price: "Product price"

现在对于必须是数字部分,我们可以再次使用 i18n。来自 the docs :

Active Record validation error messages can also be translated easily. Active Record gives you a couple of namespaces where you can place your message translations in order to provide different messages and translation for certain models, attributes, and/or validations.



这些命名空间有一张方便的表格 here ,您可以在其中看到数字验证的消息是 not_a_number .

所以现在我们可以将它添加到 en.yml因此:
en:
activerecord:
errors:
models:
product:
attributes:
prod_price:
not_a_number: "must be a number"

现在,当验证失败时,它将连接两者,给你:产品价格必须是一个数字。

关于ruby-on-rails - rails 中有效数字的自定义错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2150436/

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