メールアドレスの確認を強制せずに、手動で新しいUser
sを作成したいと思います。
アイデアは、既存のユーザーが登録を必要とせずに友達を自動的に追加できるようにすることです。私が解決しようとしているビジネスケースにとっては理にかなっています。
Deviseでこれをどのように達成できますか?
skip_confirmation!
メソッドは、すべてのconfirmable
モデルで使用できます。
@user = User.new params[:user]
@user.skip_confirmation! # Sets confirmed_at to Time.now, activating the account
@user.save
ただし、ユーザーアカウントはアクティブになります。それを望まない場合は、読み続けてください。
Deviseは、条件付きコールバックを使用して確認トークンを生成し、電子メールを送信します。コールバックは、confirmation_required?
がtrue
を返した場合にのみ呼び出されます。モデルで再定義します。
def confirmation_required?
false
end
ただし、これにより、確認が必要かどうかが考慮されるため、active_for_authentication?
メソッドは常にtrueを返します。それも再定義する必要があります。
def active_for_authentication?
confirmed? || confirmation_period_valid?
end
このように、アカウントは非アクティブのままになり、確認メールは送信されません。レコードでconfirm!
を呼び出すか、confirmed_at
を任意の日付に設定して、ユーザーを手動でアクティブ化する必要があります。
それはかなりのハックですが、うまくいくはずです。
参考: confirmable.rb
Devise 2.2以降、モデル内のメソッドを再定義せずに、基本的にMatheusの投稿からすべてを実行するskip_confirmation_notification!
メソッドも利用できるようになったことを将来の参考のために追加したいと思います。