Я использую Devise в приложении Ruby on Rails.В моей системе есть два типа пользователей: «Администратор» и «Пользователь».В моем приложении я позволяю пользователям-администраторам «маскироваться» или выдавать себя за пользователя, выполнив вход под ним.
class Admin::Users::MasqueradeController < Admin::BaseController
load_and_authorize_resource :user, only: :create
def create
sign_in(:user, @user)
redirect_to user_path(@user)
end
end
Это прекрасно работает, однако, если пользователь не подтвердил свою электронную почту, devise немедленно выдаст ошибку в методе "sign_in" и вернет значение по умолчанию "Вы должны подтвердить свой адрес электронной почты, прежде чем продолжить".,Мне нужно найти способ пропустить эту проверку, когда существует «current_admin_user».
Мое текущее решение состоит в том, чтобы установить allow_unconfirmed_access_for равным nil, однако это отключает проверку для всех пользователей.Вместо этого я бы хотел, чтобы он пропускал проверку только тогда, когда администратор в данный момент вошел в систему. Поэтому мне пришлось заново создать эту проверку на уровне SessionsController и просто убедиться, что она не срабатывает для администраторов.Это кажется грязным, и это не идеальное решение.
config.allow_unconfirmed_access_for = nil
Очень ценю любую помощь, которую вы можете оказать!