关于另一个模型的属性的Rails自定义验证错误消息

斯蒂芬·默多克

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

WPF:自定义控件属性已被另一个自定义控件错误注册

环回:从另一个模型验证模型未返回正确的错误消息

从另一个自定义验证中调用验证

Rails根据另一个属性的值验证模型属性

制作一个自定义模型,从另一个模型 laravel 5.8 获取数据

从自定义提示将消息转发到另一个对话框

将属性绑定到自定义控件的另一个属性

基于另一个属性值的属性上的自定义JsonConverter

django ListView - 通过加入另一个模型自定义查询集

Django tables2 为另一个模型添加自定义列

关于模型验证ASP.NET Core MVC的自定义错误消息

在CakePHP3中,如何创建自定义模型规则,以验证同一表中的某个时间是另一个时间?

根据另一个表中的自定义属性过滤值

如何从另一个指令更改指令自定义属性的值

关于原则验证的自定义错误消息2

如何遍历自定义类型列表并从另一个列表替换一个属性?

Xpages-自定义控件从另一个自定义控件获取自定义属性

CSS 自定义属性作为另一个属性的后备值而不是固定(预定义)值

自定义HTML元素扩展了另一个自定义元素

从另一个自定义函数调用Google表格自定义函数

在另一个自定义 UIView 中嵌入自定义 UITableViewCell?

从另一个自定义重定向到自定义 html 页面

显示包含来自另一个单元格的值的消息的自定义函数 Google 表格

从自定义控件的另一个属性获取在设计器中设置的属性值

片段A的原始自定义模型对象正受到另一个片段B的更改的影响

Django,根据另一个模型的值创建自定义订单/过滤器

Angular 2+自定义验证器“是否需要”填写另一个字段

依赖于另一个表单控件的Angular 2自定义验证器

为什么我不能挽救在另一个类中定义的此自定义错误?