今日の学習
今日学んだこと 2020/12/24
学習項目
ユーザー登録実装の手順とそれに伴うdeviseの大まかな使い方
学習内容
ユーザー登録実装の手順
- Gemをインストールしてサーバーを再起動
- コマンドを利用してdeviseの設定ファイルを作成
- コマンドを利用してUserモデルを作成
- 未ログイン時とログイン時でボタンの表示を変える実装
- コントローラーにリダイレクトを設定
まず、ユーザー登録機能(ログイン機能)にはdevise
というGemがよく使われている。
インストール方法としては、
- Gemfileを編集し
gem 'devise'
を記述する。 - ターミナルで
bundle install
コマンドを行い、インストール - ローカルサーバーを起動していた場合は、再起動する(Gemの導入状況を変更したため)
Gemをインストールしたあと、deviseを使うために、devise専用のコマンドで設定ファイルを作成する。
# deviseの設定ファイルを作成 % rails g devise:install
設定ファイルの生成が完了後、本格的に作っていくことになる。
大まかに、
- モデル作成
- テーブル作成
- ビューの設定
の三つに分けられる。
モデルの作成は
# 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を使いこなすことができれば、ログイン機能を制することができる気がする