Rails: пропуск проверки пароля для гостевого пользователя только с has_secure_password

avatar
mrateb
8 августа 2021 в 20:47
22
0
1

У меня есть приложение с двумя типами пользователей: Обычный пользователь и Гость. Я использую has_secure_password для функциональности пароля.

Что мне нужно, так это пропустить проверку пароля (длина и соответствие пароля паролю), если пользователь является гостем, но проверить, если пользователь не является. Теперь у меня есть следующий код, где has_secure_password(validation: false) добавляется, чтобы разрешить гостевую функциональность

class User < ApplicationRecord

  validates :name, presence: true, length: { maximum: 50 }, unless: :guest?

  validates :password, presence: true, length: { minimum: 6 }, allow_nil: true if :guest?
  # validates :password_confirmation=, presence: true, allow_nil: true if :guest?

  has_secure_password(validations: false)

Проблема заключается в том, что при создании обычного пользователя не выполняется проверка соответствия пароля и пароля_подтверждения.

Я попытался решить эту проблему, создав пользовательскую проверку для password_confirmation (строка с комментариями), но мне показалось, что это не рельсовый способ сделать это.

Я пытаюсь выяснить, как я могу пропустить has_secure_password только в случае гостевых пользователей? Если это невозможно, как я могу проверить пароль_подтверждения вручную?

Источник

Ответы (0)