Ответ 1
Метод 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
в любую дату.
Это довольно хак, но он должен работать.
Для справки: confirmable.rb