per_quiz
を確認する前に、current_user
が設定されているかどうかを確認するだけです。あなたはcurrent_user.nil?
を照会することにより、ビューで簡単にログイン状態のチェックを扱うことができます:あなたはおそらく本当にたいことはログアウトし、ユーザは、ホーム・ページまたはサインインページとして、別の場所に行くことです
<% if !current_user %>
<p> You must be logged in to do anything useful. Please go login</p>
<% elsif !current_user.per_quiz %>
<p>Cool quiz stuff goes here...</p>
<% else %>
。これを行うには、コントローラにいくつかの簡単なことをする必要があります。質問にコントローラコードを含めていないので、コントローラは「QuizzesController」と呼ばれると仮定します。ここで
はそれを行う方法は次のとおりです。これは何
class QuizzesController < ApplicationController
# Other devise authentication logic goes here...
before_action :authorize_user!
# Your actions go here...
private
def authorize_user!
if !current_user
redirect_to '/', notice: "You must be logged in to access to this page"
end
end
end
は、ユーザーがそれらをこのコントローラに何かをさせる前にログインしていることを確認します「before_action」ハンドラをインストールしています。ログインしていない場合は、どこにでもリダイレクトすることができます。
場合によっては、この種の処理が必要な特定のアクションのみがあることに注意してください。その場合は、:only
または:except
オプションを使用して、処理されるアクションまたは処理されないアクションを指定することができます。
before_action :authorize_user!, only: [ :new, :edit, :create ]
またはこのような:
before_action :authorize_user!, except: :list
これはあなたにdevise
が認証一部を扱う方程式の承認一部を管理する上でより大きな柔軟性を与えることはこのようになります。
ああ!これはまさに私が探していたものです!ありがとうございました! – Liz
注:明示的に 'false'の値を扱っていない限り、' .nil? 'との比較は不要です。 – tadman