2012-02-17 2 views
6

Я использую в качестве механизма проверки подлинности в своем приложении. Есть ли способ использовать пользовательские сообщения при сбое проверки. Devise предоставляет мне следующее сообщение, когда пароль пуст: Password can't be blank, но мне нужно другое сообщение. Как мне это сделать?Создавать пользовательские сообщения при завершении проверки

ответ

22

ActiveRecord en.yml является ответ, который я хотел бы предложить, если вы хотите изменить Validation сообщение для Devise

Вот как эн. yml должно выглядеть так:

en: 
    activerecord: 
    errors: 
     models: 
     user: 
      attributes: 
      email: 
       blank: "Please Specify an Email id" 
       taken: "Please use a different Email id" 
       invalid: "Please Specify a valid Email id" 
      password: 
       blank: "Please Specify a Password" 
       confirmation: "Password does not match" 
      password_confirmation: 
       blank: "Please Specify a Password Confirmation" 
      first_name: 
       blank: "Please Specify First Name" 
      last_name: 
       blank: "Please Specify Last Name" 
     pdf: 
      attributes: 
      name: 
       blank: "Please Specify name to PDF" 
       taken: "Please use different name for PDF" 
      attachment: 
       blank: "Please Upload a PDF Attachment" 
     data_element: 
      attributes: 
      name: 
       blank: "Please give Element a desired name" 
       taken: "Already Created Element with given name" 
      color: 
       blank: "Please assign a color to Element" 
     template: 
      attributes: 
      name: 
       blank: "Please Specify a Name" 
       taken: "Please use a different name" 

I a DVICE вам определить этот путь вместо настройки разработать модуль Validation

Потому что если вы будете следовать выше подход, можно было бы, что бы вы пропустить валидацию место или два

Примеру Я, удалить выше Завещание модуль проверки, а затем substitue самостоятельно в пользователя Модель

то все проверки будут работать, но вы не пропустили бы проверку в изменении пароля

там результирующей твой войти в системе, даже если пароль не был поставлен и никогда данный

Держите петлю, что слишком

Cheer

С уважением

+0

ГДЕ Это? 'Конфиг/местные/en.yml'? – ahnbizcad

+0

Что вы имеете в виду, избавившись от модуля «над модулем разработки выше» и создайте свой собственный в пользовательской модели? Во-первых, нет модуля проверки надстройки. То, что вы написали выше, это файл en.yml, а не файл devise.en.yml. И даже файл devise.en.yml не является модулем проверки. Как вы можете поместить код devise.en.yml в модель User? Это как квадратная привязка в круглое отверстие. Что вы подразумеваете под «держать петлю этого тоже»? Что он перейдет в бесконечный цикл, если проверка «сменить пароль» будет пропущена? – ahnbizcad

+0

Другой вопрос: Я думал, что эти сообщения yml были сообщениями, а не действительными валидациями. Зачем менять их в обход проверки? Возможно, мои предложенные изменения - это не то, что вы имели в виду, но это было неясно. – ahnbizcad

0

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

Вот аналогичный вопрос: Devise attributes for i18n?

2

Пожалуйста, обратитесь к ниже URL.

http://railscasts.com/episodes/210-customizing-devise?view=asciicast

Если пользователь подписывает, вы можете редактировать все сообщения об ошибках в devise.en.yml под config/locales.

Если вы регистрируетесь, Devise предоставляет свои собственные проверки из коробки без какой-либо настройки. Если вы хотите настроить его, вы можете отредактировать модель User.

Найти devise :validatable и снять опцию :validatable. После этого вы сможете использовать обычные проверки рельсов. Обратите внимание, что это приведет к необходимости выполнять все проверки самостоятельно.

validates_presence_of :password, :message=>"Your custom error message!"

Некоторые обычные валидация:

validates_confirmation_of :password 
    validates_presence_of :password, :on => :create 
    validates_presence_of :email 
    validates_uniqueness_of :email 
0

Вы можете настроить DEViSE сообщения от конфигурации/локалей/devise.en.yml, но если вы хотите, чтобы изменить сообщение проверки, то delete: validatable from Model. Затем вы можете изменить сообщение проверки, как раньше. Например:

validates_uniqueness_of :email,  :case_sensitive => false, :allow_blank => true, :if => :email_changed? 
validates_format_of :email, :with => Devise.email_regexp, :allow_blank => true, :if => :email_changed? 

validates_presence_of :password, :on=>:create 
validates_confirmation_of :password, :on=>:create 
validates_length_of :password, :within => Devise.password_length, :allow_blank => true 
Смежные вопросы