Измените имя поля ошибки в Rails

#ruby-on-rails #ruby

#ruby-on-rails #ruby

Вопрос:

Мне интересно, есть ли способ изменить имя поля для ошибки проверки, с которой оно связано. Например, если я отправляю имя пользователя (действительно fname в таблице) без каких-либо данных, оно выдает Fname can't be blank.

Возможно ли изменить это на First Name can't be blank ?

Ответ №1:

В настоящее время обычной практикой является редактирование ваших локальных файлов следующим образом:

 # config/locales/en.yml
en:
  activerecord:
    attributes:
      user:
        fname: "First Name"
  

Теперь в вашем сообщении об ошибке будет написано «Имя не может быть …»

Для полноты картины у вас есть другой вариант. Который заключается в добавлении следующего к вашей пользовательской модели:

 class User < ActiveRecord::Base

  HUMANIZED_ATTRIBUTES = {
    :fname => "First Name"
  }

  def self.human_attribute_name(attr, options = {}) # 'options' wasn't available in Rails 3, and prior versions.
    HUMANIZED_ATTRIBUTES[attr.to_sym] || super
  end

end
  

Комментарии:

1. 1. Но я думаю, что def self.human_attribute_name(attr) это не обязательно.

2. в Rails 4 мне пришлось добавить второй аргумент к self.human_attribute_name(attr) вызову метода. Таким образом, становится self.human_attribute_name(attr, options = {})

3. В некоторых случаях вам необходимо изменить activerecord на activemodel en: activerecord: attributes: user: fname: "First Name"