Help us understand the problem. What is going on with this article?

超基本的なdeviseの使い方

More than 3 years have passed since last update.

導入手順

  • gem 'devise'をGemfileに追記
  • bundle install でgemの読み込み
  • ローカルサーバーの再起動 rails s
  • deviseを使用する為にはインストールに加えてdevise専用のコマンドを利用して設定ファイルを作成する必要がある。 rails g devise:install
  • rails g devise user でログイン機能を持つUserクラスをもつモデルを作る。 その時にusersテーブルにカラムを追加するためのマイグレーションファイルができているので rake db:migrate を実行。するとusersテーブルが出来る。 ちなみにuserのモデル名は任意なので何でもok

deviseを使う事で利用できるメソッド

user_signed_in?

ユーザーがサインインしているかどうかを検証するメソッド。サインインしている場合にはtrueを返し、そうでない場合はfalseを返す。

ログインしている時とそうでない場合の使い方の例

      <% if user_signed_in? %>
        <div class="user_nav grid-6">
          <%= link_to "ログアウト", destroy_user_session_path, method: :delete %>
          <a class="post" href="/hoge/new">投稿する</a>
        </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用のviewファイルを作成する

rails g devise:views
とコマンドを打つとapp/views/deviseのファイルに各種viewファイルが作成される

サインアップ画面のview
app/views/devise/ragistrations/new.html.erb

ログイン画面のview
app/views/devise/sessions/new.html.erb

deviseの各アクションへのパス

ターミナルでrake routesを実行して確認。

configure_permitted_parametersメソッド

deviseではサインアップ時にメールアドレスとパスワードのみを受け取るようにストロングパラメーターで設定してあるのでキーを追加しても許可されません。

そこで登場するのがconfigure_permitted_parametersメソッド

configureは設定する
permittedは許可
parametersはパラメーター
という意味。
単純にdeviseで利用出来るパラメーターを設定しますよ。という意味。

パラメーターに追加したい場合はapplication_controller
before_actionconfigure_permitted_parametersメソッドを設定する。

例
  class ApplicationController < ActionController::Base
    # Prevent CSRF attacks by raising an exception.
    # For APIs, you may want to use :null_session instead.
    protect_from_forgery with: :exception
    before_action :configure_permitted_parameters, if: :devise_controller?

    def configure_permitted_parameters
      devise_parameter_sanitizer.permit(:sign_up, keys: [:nickname])
    end
  end

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした