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