нет пароля_подтверждения при создании, но нужно во время обновления (authlogic) - PullRequest
0 голосов
/ 12 августа 2010

Я новичок в rails и использую authlogic для своей системы аутентификации.Я хочу получить password_confirmation, когда пользователь обновляет свой профиль, но не когда он регистрируется.

Я выяснил этот параметр конфигурации

acts_as_authentic do |c|
  c.require_password_confirmation=false
end

Когда я это делаю, он игнорирует password_confirmation при регистрации(что хорошо), но при редактировании профиля пользователя я хочу, чтобы он рассмотрел поле password_confirmation.Есть ли способ я могу настроить это?

1 Ответ

1 голос
/ 12 августа 2010

Поскольку вы приостановили валидацию на основе Authlogic, вы можете добиться этого с помощью стандартной валидации модели Rails, например:

validates_presence_of :password_confirmation, :if => :password_required?

, где password_required? - это необязательный метод модели, который проверяет, хотите ли вы этопроверка для данного сценария.

ОБНОВЛЕНИЕ

Поскольку кажется, что опция c.require_password_confirmation=false означает, что атрибут password_confirmation больше не создается автоматически, тогда вам нужно обратитьсярешение немного по-другому.Создайте виртуальный атрибут вручную и пользовательскую проверку для конкретного случая обновления профиля.Как то так:

class User < ActiveRecord::Base
  attr_accessor :password_confirmation

  validate do |user|
    unless user.new_record?
      user.errors.add :password, "is required" if self.password.blank?
      user.errors.add :password_confirmation, "is required" if self.password_confirmation.blank?
      user.errors.add_to_base, "Password and confirmation must match" if self.password != self.password_confirmation
    end
  end
end
...