Rails 4 I18n: использование имени человеческой модели в сообщении проверки соответствия

У меня есть простой объект, как:

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

и я не могу получить I18n сообщения проверки, чтобы использовать имя модели человека для сообщения об ошибке.

Я сохранил ключ "activerecord.models.company" как "Firma" (немецкий), и когда я Company.model_name.humanВозвращает "Фирму", как и ожидалось. Но он по-прежнему отображается как "Компания" в сообщении об ошибке, пока я не сохраню "activerecord.attributes.question.company".

Это раздражает, потому что мне нужно добавить ключ атрибута для каждой модели, которая проверяет связь с Компанией (т.е. "activerecord.attributes.user.company", "activerecord.attributes.project.company").

Есть ли способ ссылаться на имя модели человека вместо атрибута?

1 ответ

Решение

Я думаю, это потому, что в вашей форме поля компаний зависят от отношения "has_many", через fields_for helper, также использующего "accepts_nested_attributes" в модели:

Я полагаю, у вас есть...

сообщить

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

... в модели

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

...

Я думаю (до сих пор) это нормально... потому что у компаний "Вопросы" может быть одно имя, а у компаний "Проектов" может быть другое, и так далее.

Другие вопросы по тегам