Как я могу использовать правила проверки, установленные в модели на нескольких контроллерах в ruby ​​on rails? - PullRequest
1 голос
/ 30 октября 2011

Для формы регистрации на моем веб-сайте я не требую, чтобы пользователи подтверждали свои пароли, поэтому поле подтверждения пароля отсутствует.

Однако, когда пользователь сбрасывает свой пароль и щелкает ссылкув их электронном письме, а затем на странице смены пароля, я требую, чтобы они подтвердили свой пароль и предоставили им поле для этого.

Мой вопрос: как я могу добавить подтверждение пароля и минимальную и максимальную длины для паролейЭто влияет на мою регистрационную форму, потому что они используют ту же модель.Для моей формы регистрации у меня есть правила проверки минимальной и максимальной длины, и я хочу, чтобы они применялись к форме смены пароля, но также включали подтверждение пароля.

Какой, по вашему мнению, самый лучший и удобный способ сделать это?

Ответы [ 2 ]

2 голосов
/ 30 октября 2011

Если подтверждение пароля должно быть сделано только для уже созданных пользователей, самое простое решение:

class User < ActiveRecord::Base
   validates_confirmation_of :password, :unless => :new_record?
end

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

0 голосов
/ 30 октября 2011

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

class User < ActiveRecord::Base
  validate :user_data_validation

  def user_data_validation

    errors.add(:password_confirmation, "error in the password confirmation") if
      !password.blank? and password != password_confirm
  end
end

С другой стороны, вы можете использовать проверки уровня управления, но:

Проверки на уровне контроллера могут быть заманчивыми для использования, но часто становятся громоздкими и трудными для тестирования и обслуживания.Когда бы ни было возможно, хорошей идеей будет поддерживать стройность ваших контроллеров, поскольку в долгосрочной перспективе вам будет приятно работать с вашим приложением. (с)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...