2016-08-22 6 views
0

ユーザーがサインアップした後、ダッシュボードに誘導したい。フル機能のために、彼らは自分の電子メールを確認する必要があります。Rails&Devise:特定の機能について電子メールを確認してもらい、確認する前にログインを許可する

今、Userモデルにconfirmableを追加すると、ユーザーはログインできません。

どうすればこの機能を実現できますか?

答えて

1
  1. だけapplication.rb

    def is_confirmed? 
    if user_signed_in? 
        if current_user.confirmed? 
         return true 
        else 
         flash[:notice] = "You are not allow to view this page." 
         redirect_to dashboard_path # your dashboard path 
        end 
    end 
    end 
    
  2. あなたcontoller

    使用中の検証を書くdevise.rbに

    config.allow_unconfirmed_access_for = nil 
    
  3. を書きます

    before_action :is_confirmed?, except: [:dashbord] 
    
0

私はあなたの工夫とallowing-unconfirmed-access

ちょうどそれらがログインし、ユーザーが電子メールを確認した場合だけでチェックできるようにするためにextreamely長い期間を追加してこれを達成することができると思う - 彼らにすべてのダッシュボードの内容およびその逆を示しています。

:confirmableバリデーションをまったくスキップすることはできます。

これが役に立ちます。

0

https://github.com/plataformatec/devise/wiki/How-To:-Add-:confirmable-to-Users

#ソリューション1 このwikiページをチェックアウトのようなdevise.rb何かであなたの缶設定:

config.allow_unconfirmed_access_for = nil 

だからそれは、ユーザーが任意の確認なしに、しかし、例えばアクセスできることを意味:

config.allow_unconfirmed_access_for = 1.hour 

だから、1時間以内にアクセスできるUT確認

#ソリューション2

# in User.rb 
protected 
def confirmation_required? 
    false 
end 

だから今、確認せずに何でもアクセスすることができます使用しますが、私は解決策#1は、より効率的であると思います!

関連する問題