🕌
【Rails×devise】例外的にメール確認なしでユーザを登録する
deviseのconfirmableがONだが、例外的に確認メールを飛ばすことなくユーザ登録をしたい、というケースに遭遇した。
結論:skip_confirmation!を利用する
調べてみたところ、deviseのskip_confirmation!
を利用するのが良さそう。
exceptional_user = User.new(name: 'exceptional user')
exceptioanl_user.skip_confirmation!
exceptional_user.save!
そもそもconfirmableがONの時は、confirmed_at
がnilであればメールを飛ばす処理が仕込まれている。つまり、confirmableをオンにした状態で確認メール送信をしたくない時は、新規Userを作成する時にconfirmed_atに値を入れれば良い。
そのための仕組みとしてdeviseが用意してくれているのがskip_confirmation!
で、これはconfirmed_at
に現在のUTC時刻を入れるメソッド。これを挟むことでメールが飛ばなくなる。
Discussion