Railsのdeviseの話です。
deviseは使わない派、deviseは悪派な人も多いですが、deviseの標準的な範囲で使えそうならとりあえず使っちゃう派です。まあ、その辺の論争は置いといて。
(ユーザーを一括作成するなど)都合により認証メールを送らないでいるための方法と、認証メールとか関係なく認証済にしてしまう方法、それぞれ別の手段が提供されています。
コードをみれば一目瞭然ですが、こないだ開発中に「どっちだっけ?」となったので、メモっておこうかと思いました。
認証メールを送らない方法
こうです。
user = User.new(email: email)
user.skip_confirmation_notification!
user.save
中身的にはこうなってて、
def skip_confirmation_notification!
@skip_confirmation_notification = true
end
フラグの状態でメールを制御します。↓このへん。
devise/confirmable.rb#L305-L307 at master · plataformatec/devise
認証済にしてしまう方法
こうです。
user = User.new(email: email)
user.skip_confirmation!
user.save
中身はこうなってます。
def skip_confirmation!
self.confirmed_at = Time.now.utc
end
confirmed_at
に値をいれることで、認証済と判断されることになります。confirmed
な場合には認証メールも送られません。