deviseで確認メール無しでユーザーを作成する
deviseを使っていて :confirmable にしているとユーザー作成時に確認メールが飛ぶ。
一般ユーザーが新規登録画面から登録する場合はいいんだけど、管理者等が管理画面なりコマンドなりでユーザーを作成するときには確認メールは飛んでほしくない。
調べてみると次のようなページが見つかった。
方法1: skip_confirmation!を使う
user = User.new(params[:user]) user.skip_confirmation! user.save!
ドキュメントに書いてあるしどうやらこれが正しい方法みたい。
方法2: confirmed_atに値を入れる
User.create( :email => 'hoge@example.com', :password => 'p@ssw0rd', :confirmed_at => DateTime.now )
この方法はドキュメントに書いてあるかどうか不明。
あとアクセサ用意してないと「Can't mass-assign 〜」で怒られる。
アクセサ忘れてProduction環境で実行するとconfirmed_atは無視されるのでメールが送信されてしまう罠もある(不注意なだけ)。
1行で書けないのは面倒な気もするけど方法1が無難かな。