【问题标题】:Rails 4 I18n: Using human model name in association validation messageRails 4 I18n:在关联验证消息中使用人体模型名称
【发布时间】:2014-06-23 01:41:06
【问题描述】:

我有一个简单的对象,例如:

class Question < ActiveRecord::Base
  belongs_to :company
  validates :company, presence: true
end

我无法获得验证消息的 I18n 以使用人类模型名称作为错误消息。

我已将密钥“activerecord.models.company”存储为“Firma”(德语),当我Company.model_name.human 时,它按预期返回“Firma”。 但它仍然在错误消息中显示为“Company”,直到我存储“activerecord.attributes.question.company”。

这很烦人,因为我需要为每个模型添加一个属性键来验证与公司的关联(即“activerecord.attributes.user.company”、“activerecord.attributes.project.company”)。

有没有办法引用人体模型名称而不是属性?

【问题讨论】:

  • 你解决过这个问题吗?
  • 很遗憾没有。但这提醒我接受 Alberts 的回答,因为我认为他对此是正确的。不过不喜欢。
  • 感谢您回来查看。很遗憾没有解决方案。我最终不得不使用自定义验证方法,这样我才能返回一条消息。

标签: ruby-on-rails-4 internationalization associations


【解决方案1】:

我认为这是因为在您的表单中,公司的字段依赖于“has_many”关系,通过 fields_for 助手,也在模型中使用“accepts_nested_attributes”:

我想你有...

形式

<%= question.fields_for companies do |c| %>

... 在模型中

class Question<ActiveRecord::Base
  has_many :companies
  accepts_nested_attributes_for :companies,  :allow_destroy => :true

...

我认为(直到现在)这很正常......因为“问题”的公司可以有一个名称,而“项目”的公司可以有另一个名称,等等

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多