Ответ 1
Вы хотите использовать метод skip_reconfirmation!
(обратите внимание на "re" при повторном подтверждении).
@user = User.find_by_email('[email protected]')
@user.email = '[email protected]'
@user.skip_reconfirmation!
@user.save!
Я использую Rails 3 с новым подтверждением.
Я хочу, чтобы пользователи в целом подтвердили свой адрес электронной почты. При создании нового пользователя я могу пропустить электронное письмо с подтверждением:
user.skip_confirmation!
Однако иногда мне нужно вручную изменить адрес электронной почты от имени пользователя. И это не работает при смене электронной почты. Пример:
@user = User.find_by_email('[email protected]')
@user.email = '[email protected]'
@user.skip_confirmation!
@user.save!
Это все еще требует подтверждения пользователем электронной почты. Электронная почта не обновляется. И разработчик отправляет электронное письмо.
Любые идеи? Благодаря
Вы хотите использовать метод skip_reconfirmation!
(обратите внимание на "re" при повторном подтверждении).
@user = User.find_by_email('[email protected]')
@user.email = '[email protected]'
@user.skip_reconfirmation!
@user.save!
Попробуйте установить Devise.reconfirmable
или User.reconfirmable
(или любую другую вашу модель) на значение false. Вы можете установить его на config/initializers/devise.rb
в этой строке:
# If true, requires any email changes to be confirmed (exctly the same way as
# initial account confirmation) to be applied. Requires additional unconfirmed_email
# db field (see migrations). Until confirmed new email is stored in
# unconfirmed email column, and copied to email column on successful confirmation.
config.reconfirmable = true
Вы также можете использовать метод Active Record update_column
, который сохраняет поле без выполнения обратных вызовов или проверок.
Вы можете использовать этот тип кода в своей модели # models/users.rb
. Это отключит подтверждение электронной почты при обновлении:
def postpone_email_change?
false
end
или в вашем контроллере
def update
user.email = params[:user][:email]
user.skip_confirmation_notification!
if user.save
user.confirm
end
end
Если вы хотите пропустить только уведомление по электронной почте, сделайте следующее:
@user.skip_confirmation_notification!
@user.save