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