Deviseにてシステムからユーザーのメールアドレスを変更してもメールを送信しない

at 2015-12-09 01:31 (UTC)

Devise を使用していて、手順を踏まずにシステムにてメールアドレスを変更すると保存時にメールが送信されてしまう。
メールを送信したくない場合は skip_reconfirmation! を使用する。

def change_user_email(user)
  user.email = 'new-email@example.com'
  user.skip_reconfirmation!
  user.save
end

# テストコード
test 'ユーザーのメールアドレスを変更しても、メールが送信されないこと' do
  assert_no_difference 'ActionMailer::Base.deliveries.size' do
    change_user_email(@user)
  end
end

なお、新規作成時に確認手順を飛ばしたい場合は skip_confirmation! を使う。