私の状況では、ユーザーが自分のサイト にアカウントを作成し、その認証を管理できるようにするために工夫しています。 登録処理中に、 のオプションを変更することができますが、実際には別のアカウントが作成されますが、同じコアユーザーリソースに基づいています( )。 アカウントの種類の確認メールを送信しないことを選択します。私はアカウントが確認されない場合は気にしない ユーザーはログインできません、それは大丈夫です。 どうすればいいですか? ありがとう、 アレックスDevise:特定のケースで確認メールを送信しないことは可能ですか? (確認可能な場合でも有効です)
答えて
もう少し深く掘り下げれば実際はかなり簡単です。 ちょうどあなたのユーザーモデル(または使用しているものは何でも)で1つのメソッドをオーバーライド:
# Callback to overwrite if confirmation is required or not.
def confirmation_required?
!confirmed?
end
はあなたの条件とジョブの完了を入れて!
アレックス
私は機能と似たような行うことができました:
registrations_controller.rbを
def build_resource(*args) super if session[:omniauth] # TODO -- what about the case where they have a session, but are not logged in? @user.apply_omniauth(session[:omniauth]) @user.mark_as_confirmed # we don't need to confirm the account if they are using external authentication # @user.valid? end end
そして、私のユーザモデルで:
user.rb
def mark_as_confirmed self.confirmation_token = nil self.confirmed_at = Time.now end
工夫が他の回答が提出された後にこれを追加した場合、私は知らないが、このためのコードはconfirmable.rb
に権利がある:
# If you don't want confirmation to be sent on create, neither a code
# to be generated, call skip_confirmation!
def skip_confirmation!
self.confirmed_at = Time.now
end
ユーザを保存する前にこれを呼び出す必要があります。そうしないと、 'Confirmation instructions'メールが送信されます。 – dukedave
同様の 'skip_reconfirmation!'メソッドもあります –
あなたは、単に前に、コントローラに次のコード行を追加することができます新規ユーザの作成:あなただけの電子メールを送信スキップしたいが、確認を行っていない場合は、
@user.skip_confirmation!
'create'アクションをオーバーロードし、カスタマイズのために' super do | user | 'を使用している場合、スキップするのは遅すぎます。これは例えば 'build_resource'に入れなければなりません。 –
は使用:
# Skips sending the confirmation/reconfirmation notification email after_create/after_update. Unlike
# #skip_confirmation!, record still requires confirmation.
@user.skip_confirmation_notification!
あなたは、このメソッドを上書きするコールバックであなたのモデルでこれを呼び出すにしたくない場合は、次の
def send_confirmation_notification?
false
end
- 1. が再確認可能
メールがresend_confirmationまたはsend_reconfirmationに送信されることはありません、便利... –
うわーです。..超クールな男! – knagode