#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"