Метод skip_confirmation!
доступен для любой модели confirmable
.
@user = User.new params[:user]
@user.skip_confirmation! # Sets confirmed_at to Time.now, activating the account
@user.save
Хотя учетная запись пользователя будет активирована.Если вы этого не хотите, продолжайте чтение.
Devise использует условные обратные вызовы для генерации токена подтверждения и отправки электронного письма.Обратные вызовы будут вызываться, только если confirmation_required?
вернет true
.Переопределите его для вашей модели:
def confirmation_required?
false
end
Однако метод active_for_authentication?
всегда будет возвращать значение true, поскольку он принимает во внимание, требуется ли подтверждение или нет.Мы также должны переопределить это:
def active_for_authentication?
confirmed? || confirmation_period_valid?
end
Таким образом, учетная запись останется неактивной, и подтверждение по электронной почте отправлено не будет.Вам нужно будет вручную активировать пользователя, позвонив confirm!
на записи или просто установив confirmed_at
на любую дату.
Это довольно взломано, но должно работать.
Для справки: Подтверждаемый.rb