スポンサーリンク

【Ruby on Rails】deviseの導入手順をわかりやすくまとめてみた!!

みなさんこんにちは!
のむ(@nomu_engineer)です!

今回の記事では、RubyのGemの一つである、「devise」の導入手順についてまとめてみました!

ポイントとしては、デフォルトでは設定されていない、ニックネームの登録を行える実装を説明していることです。

この記事を読むメリット
・deviseの導入の仕方がわかる

・デフォルトにはないカラムの追加の仕方がわかる
・deviseに対する知識が深まる

この記事を読むおすすめの読者
・プログラミング初心者
・駆け出しエンジニア
・deviseの導入の仕方がわからない方

本題に入る前に、「rails new」でアプリの雛形の作成を終えている前提ですので、その点はご了承ください!

それでは早速本題の方に入っていきたいと思います!

Gemfileに記述

まずは、Gemfileにdeviseを追加します。

gem "devise"

bundle install実行

% bundle install

bundle installを行うことで、deviseをインストールします。

Railsアプリにdeviseをインストール

% rails g devise:install

deviseの設定関連に使用するファイルを自動で生成するコマンドです。
上記のコマンドを実行すると、以下のような結果になります。

認証ユーザー用のModelの作成

モデル名は任意です!
今回はUserとします

% rails g devise user

上記の記述で、マイグレーションファイルが作成されるので、追加の記述がある場合は、編集をします。

deviseのデフォルトでは、メアドとパスワードのカラムは存在し、それらの入力欄があり、保存することができます。
ですが、ニックネームのカラムや、入力欄はありません。

今回はニックネームカラムを追加するので、マイグレーションファイルを編集します。

デフォルトのマイグレーションファイルは以下のようになっているかと思います。

これを、下記のようにニックネームカラムを追加します。

マイグレーションがファイルの情報をDBに反映

マイグレーションファイルの編集が終わったら、マイグレートの実行を行いましょう!

% rails db:migrate

バリデーションの記述

ニックネームカラムを追加して、マイグレートを行ったら、モデルにバリデーションの記述をします。

この記述で、ニックネームの空欄はできないというバリデーションを設けることができます。

deviseのviewファイルの生成

% rails g devise:views users

上記のコマンドでdeviseのviewファイルを生成することができます。
今回は、ログイン時に、メアドとパスワードだけでなく、ニックネームも保存するように実装するので、デフォルトのビューファイルを編集していきます。

新規登録画面の編集を行うので、編集するファイルは以下の箇所になります。
app/views/devise/registrations/new.html.erb

変更箇所は2箇所です。

①form_forをform_withに置き換え
②ニックネームの入力欄の作成

form_forは非推奨の書き方になっているので、form_withに置換することをお勧めします。

ApplicationControllerの編集

ニックネームのカラムを追加し、入力欄を追加したら、ニックネームのストロングパラメータを追加します。

ApplicationControllerを以下のように編集します。

編集内容は、2点です。

①ログインしているユーザーのみアクセス可能
②ストロングパラメータにニックネームを追加

deviseのデフォルトでは、メアドとパスワードはストロングパラメータがで起用されるようになってるのですが、新しく自分で追加したカラムには適用されてません。

なので、今回は追加したニックネームカラムにストロングパラメータを適用しました。
そうすることで、ニックネームの情報を受け取ることができるようになります。

deviseのコントローラーの生成

% rails g devise:controllers users

上記のdeviseコマンドを入力すると、下記の画像のようになると思います。
赤丸で大事と囲んでいるのは、この後のルーティングにおいて必要になってきます。

たくさんのコントローラが作成されますが、今回はそこの詳細は省かせていただきます!

ルーティングの設定

このルーティングで、先ほどの画像において「大事」ということで赤丸で囲んだ部分を記述します。

deviseを導入した時点での、何も触っていない状態のルーティングは以下の状態です。

ルーティングを編集します!

下記のように編集することで、コントローラーが使えるようになります。

ここまでできたら、「rails s」でサーバーを再起動して、アプリの挙動を確かめてみましょう!

最後に

以上がdeviseの導入手順です。

最後にポイントだけまとめて終わりたいと思います。

・ユーザー管理機能はdeviseを用いることで簡単に実装できる

・メアド、パスワード以外のカラムを追加したい場合は、マイグレーションファイルの編集を行う

・forn_forの記述は非推奨なので、form_withに置換するのがbetter

・自分で追加したカラムは自分でストロングパラメータを適用させる

deviseは使うことが多いと思うので、是非抑えておきましょう!!

ありがとうございました!

スポンサーリンク




この記事を書いた人