Подтвердите пароль при изменении определенных полей в RoR - PullRequest
0 голосов
/ 21 мая 2010

Я создаю приложение RoR 3, сообщество. Имеет модель пользователя и несколько полей.

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

Поэтому я спрашиваю вас, как я могу создать такой валидатор.

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

Ответы [ 2 ]

1 голос
/ 21 мая 2010

Это на самом деле довольно легко сделать, если вы знакомы с фреймворком Rails.

модели / User.rb
class User < ActiveRecord::Base
  validate :correct_password?, :if => :check_password?

  def check_password?
    [birthday_changed?, other_field_changed?].any?
  end

  def correct_password?
    # without knowing more about how you store the password
    # this probably won't work with your code directly
    errors.add_to_base("Must provide password") unless password?
    errors.add_to_base("Incorrect password") unless password == User.find_by_id(id).password
  end
end
0 голосов
/ 21 мая 2010

Несмотря на то, что создание аутентификации и авторизации пользователей не сложно - я бы посоветовал использовать что-то вроде "AuthLogic" или "Devise" гемов / плагинов, которые, скорее всего, будут покрывать 90% необходимой вам функциональности. Вы всегда можете настроить / добавить новые функции, если это необходимо.

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

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