【发布时间】:2015-08-19 15:51:21
【问题描述】:
我希望更新带有人性化属性名称的 rails 发送的模型错误哈希。例如,对于名为 Foo 的模型。我有一个名为 foo_nm 的属性。当我做@foo.errors 假设@foo 是类Foo 的对象时,我希望翻译成foo_name。
{"foo_nm"=>["can't be blank"]}
到目前为止,我尝试通过以下方式扩展human_attribute_name
HUMANIZED_ATTRIBUTES = {
:foo_nm => "foo_name"
}
def self.human_attribute_name(attr, options={})
HUMANIZED_ATTRIBUTES[attr.to_sym] || super
end
但这似乎并没有修改错误哈希。关于如何更新错误哈希的任何想法将不胜感激
【问题讨论】:
-
你不能用
@foo.errors.add(:foo_name, 'error message')吗?然后提取与您的属性名称不匹配的错误foo_nm等? -
@MrYoshiji 我正在使用 validates :foo_nm ,presence: true 并且根据您将不得不重写 validates 只是为了在错误哈希中添加 foo_name 。这是我不想做的事情,因为我有 10 个其他模型,比如 foo,我需要 _nm 为 _name。所以我必须到处改变它
标签: ruby-on-rails ruby rails-activerecord