学習の書き留め プログラミング勉強中

プログラミングで学んだことを日記として残して行こうと思います

今日の学習

今日学んだこと 2020/12/24

学習項目

ユーザー登録実装の手順とそれに伴うdeviseの大まかな使い方

学習内容

ユーザー登録実装の手順

  1. Gemをインストールしてサーバーを再起動
  2. コマンドを利用してdeviseの設定ファイルを作成
  3. コマンドを利用してUserモデルを作成
  4. 未ログイン時とログイン時でボタンの表示を変える実装
  5. コントローラーにリダイレクトを設定

まず、ユーザー登録機能(ログイン機能)にはdeviseというGemがよく使われている。
インストール方法としては、

  1. Gemfileを編集し gem 'devise'を記述する。
  2. ターミナルでbundle installコマンドを行い、インストール
  3. ローカルサーバーを起動していた場合は、再起動する(Gemの導入状況を変更したため)

Gemをインストールしたあと、deviseを使うために、devise専用のコマンドで設定ファイルを作成する。

# deviseの設定ファイルを作成
% rails g devise:install

設定ファイルの生成が完了後、本格的に作っていくことになる。
大まかに、

  1. モデル作成
  2. テーブル作成
  3. ビューの設定

の三つに分けられる。
モデルの作成は

# deviseコマンドでUserモデルを作成
% rails g devise user

で行い、自動でルーティングの追記、マイグレーションの生成がされるため、そのまま

% rails db:migrate

でテーブルを作成する。

ビューファイルはGemfileにそのまま記述されているが、味気ないらしいので、

% rails g devise:views

を行い、対応している
サインアップ画面: app/views/devise/registrations/new.html.erb
ログイン画面: app/views/devise/sessions/new.html.erb を編集し、味付けする。

登録に必要な情報を付け足したい場合は、必要に応じて、

% rails g migration Addカラム名To追加先テーブル名 追加するカラム名:型
% rails db:migrate

からカラムを追加する。
パラメーターに制限をかける場合、ストロングパラメーターは`applicationコントローラに定義する。(詳しい方法はまだ理解できていない)

ログインの有無で表示を変る方法は、deviseを導入していると使えるuser_signed_in?メソッドを使用を使用し、ログインしているかどうかを判定して表示を変える。

この状態のみだと、urlを入れてしまえば意味がなくなってしまうため、最後にリダイレクトを用いて、ログインしていないユーザーに制限をかける。

まとめ

deviceを使いこなすことができれば、ログイン機能を制することができる気がする