メソッド | 用途 |
---|---|
before_action :authenticate_user! | コントローラに設定し、ユーザーのみアクセスを許可する。 |
user_signed_in? | ユーザーがログインしているかどうか判定を行う。ユーザーがログインしていればtrueを、ログアウト状態であればfalseを返します。 |
current_user | 現在ログインしているユーザー取得する |
user_session | ユーザーのセッション情報にアクセスする |
##before_action :authenticate_user!
ログイン状態によって表示するページを切り替えるdeviseのメソッド。
class SampleController < ApplicationController
before_action :authenticate_user!, only: [:show]
def index
end
def show
end
end
onlyオプションを使うと、showアクションはログイン済みユーザーのみアクセス可能とし、indexアクションはログインしていなくてもアクセスできるようになります。
##user_signed_in?
<% if user_signed_in? %>
<div class="user_nav grid-6">
<%= link_to "ログアウト", destroy_user_session_path, method: :delete %>
<%= link_to "投稿する", new_tweet_path, class: "post" %>
</div>
<% else %>
<div class="grid-6">
<%= link_to "ログイン", new_user_session_path, class: "post" %>
<%= link_to "新規登録", new_user_registration_path, class: "post" %>
</div>
<% end %>
サインインしていれば"ログアウト"と"投稿する"のページに、サインインしていなければ"ログイン"と"新規登録"を表示といった記述も可能。
deviseの設定がまだ不慣れなため、備忘録として