gpt4 book ai didi

ruby-on-rails - 另一个模型的属性上的 Rails 自定义验证错误消息

转载 作者:行者123 更新时间:2023-12-04 06:06:40 25 4
gpt4 key购买 nike

我在我的模型中使用以下代码将链接插入到验证错误消息中:

class Bar < ActiveRecord::Base
has_many :foos
validate :mode_matcher

def mode_matcher
self.foos.each do |f|
errors[:base] << mode_mismatch(foo) unless foo.mode == "http"
end
end

def mode_mismatch(f)
foo_path = Rails.application.routes.url_helpers.foo_path(f)
"Foo <a href='#{foo_path}'>#{f.name}</a> has the wrong mode.".html_safe
end

它运行良好,但我知道推荐的方法是通过语言环境文件。我遇到了麻烦,因为我正在验证另一个模型的属性,因此以下不起作用:
en:
activerecord:
errors:
models:
bar:
attributes:
foo:
mode_mismatch: "Foo %{link} has the wrong mode."

这样做的正确方法是什么?

最佳答案

ActiveModel 在多个范围内查找验证错误。 FooBar可以为 mode_mismatch 共享相同的错误消息如果您将其包含在 activerecord.errors.messages而不是 activerecord.errors.models :

en:
activerecord:
errors:
messages:
mode_mismatch: "Foo %{link} has the wrong mode."

将该区域设置字符串与 link 一起使用插值然后变成一个问题
def mode_matcher
self.foos.each do |foo|
next unless foo.mode == "http"

errors.add :base, :mode_mismatch, link: Rails.application.routes.url_helpers.foo_path(f)
end
end

关于ruby-on-rails - 另一个模型的属性上的 Rails 自定义验证错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27057784/

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