Подтвердить что ты не робот

Разработайте пропустить подтверждение перед сохранением

В Rails 4.2.0 я использую жемчужину Devise для аутентификации - devise 3.4.1.

Письмо с подтверждением отправляется сразу после создания пользователя. Нам нужно пропустить это письмо с подтверждением и отправить специальное письмо с помощью ссылки подтверждения. Пожалуйста, помогите мне решить эту проблему.

:confirmable используется в модели пользователя.

4b9b3361

Ответ 1

Вы можете попробовать это

@user.skip_confirmation!
@user.save

Вызовите skip_confirmation! перед сохранением записи пользователя.

Чтобы пропустить уведомление о подтверждении, вы можете использовать skip_confirmation_notification!

@user.skip_confirmation_notification!
@user.save

Надеюсь, это поможет!


Дополнительно

если вы хотите пропустить подтверждение в той же строке, не создавая переменную, и вам не нужно указывать этого конкретного пользователя, например, в seeds.rb:

User.create(email: "#{role_name}@example.com",
            password: 'password',
            password_confirmation: 'password',
            confirmed_at: Time.now.utc, # skip confirmation)

Ответ 2

Вместо того, чтобы отключать создание электронной почты подтверждения и отправки своего электронного письма, вы можете настроить электронную почту для подтверждения. Вы можете создавать готовые файлы с помощью

rails generate devise:views

а затем настройте подтверждение электронной почты.

Ответ 3

Вы можете сделать это:

это может быть UserController

@user = User.new(email: "#{role_name}@example.com",
        password: 'password',
        password_confirmation: 'password',
        confirmed_at: Time.now.utc) # skip confirmation
@user.skip_confirmation!
@user.confirm
if @user.save
  MyMailer.confirmation(@user)
else
  # your implementation
end

см. документ https://github.com/plataformatec/devise/wiki/How-To:-Use-custom-mailer