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

#ruby #ruby-on-rails-5

Вопрос:

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

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

 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 только в случае гостевых пользователей? Если это невозможно, как я могу проверить наличие подтверждения пароля вручную?