30DAYSトライアル4th

30DAYSトライアル4th(Rails)のまとめ【DAY22(仮)】

30DAYSトライアル4th(Rails)DAY22(仮)の課題は「Progate Rails コース(8章まで)」です。
※(仮)としているのは東京フリーランスの記事ではDAY20までしか書かれていないので、その先を勝手に進めているからです。

ProgateのRailsコースの8章はWebアプリには欠かせないログイン関係の学習を行っていくことになります。

30DAYSトライアル4th(Rails)DAY22(仮)の学習内容

30DAYSトライアル4th(Rails)DAY20の学習内容は以下のとおりです。

30DAYSトライアル4th(Rails)DAY22(仮)
  • ログイン機能の準備:ログインページ・パスワードカラムの追加など
  • ログイン機能作成:ログイン・ログアウト処理など
  • ログイン機能の仕上げ:ログインしていない場合のアクセス制限など

ログイン機能の準備:ログインページ・パスワードカラムの追加など

パスワード用のフォーム:<input type=”password”>

パスワード入力用のinputタグのtype属性を「type=”password”」とすることで、入力した文字をを●で表示することができる。

ルーティングのgetとpost

ルーティングのURLにgetとpostで同じURLを指定できる。(内部的には別のURLと認識される)

この課題ではgetとpostそれぞれで「login」というURLを使用するが、getの「login」はログインフォーム、postの「login」は実際のログイン処理を行うようにアクションを分けている。

ログイン機能作成:ログイン・ログアウト処理など

複数条件を指定してテーブルデータを取得:find_by(条件1, 条件2, ・・・)

「find_byメソッド」は条件を「,」で区切ることで複数の条件を指定することができる。

この課題ではログイン情報である、メールアドレスとパスワードを1行でチェックするために使われている。

session変数:ログイン状態の保持

ページを移動しても変数の値を保持したい場合はsession変数を使用する。session変数に保存された変数はブラウザ自体に保存される。

progateの課題では「session[:user_id]」にusersテーブルのidを格納することで、ログインユーザーを保持している。

session変数のクリア:ログアウト処理

session変数はnilを代入することで、クリアすることが可能。

課題では「session[:user_id] = nil」とすることでログイン情報をクリアしてログアウトしたこととしている。

getとpostの使い分け

getとpostの使い分けは複雑なので、最低限以下は覚えておく。

get

  • データベースを変更しない場合

post

  • データベースを変更する場合
  • sessionの値を変更する場合

共通の変数定義:before_action

各コントローラの全アクションで共通する処理がある場合には、before_actionを使う。before_actionはアクションが実行される前に必ず実行されるので、前アクションで使用する共通の変数などに使用できる。

ログイン機能の仕上げ:ログインしていない場合のアクセス制限など

before_acitonを特定のアクションのみで実行する:only

各コントローラでbefore_acitonを使用婆に「only」を指定することで、任意のアクションのみでbefore_actionで定義したメソッドを実行できる。

before_actionはapplicationコントローラのメソッドですが、各コントローラはapplicationコントローラを継承しているので、before_actionメソッドを使用することができる。

まとめ

ユーザー管理という重要な部分だけあってボリューミーな内容でした。

道場コースなどでしっかりと復習しないとあっという間に抜けてしまいそうです。

ユーザー管理をする以外でもsession変数やグローバル関数的なやつとかはよく使いそうですしね。

今の時点ではもう1周するとかは考えていませんが、道場コースの結果次第では最悪もう1周するのも考えるかもしれません。

ABOUT ME
Jyu2
【PC1台で稼ぐブロガー兼Webエンジニアを目指し中】IT情報やWebサービス、アプリなどの情報を発信/SIerで10年以上勤務→ストレスMAXで休職中→ブログとWebの学習を行い脱サラ計画中/ #30DAYSトライアル 1st完了→2nd実施中 / 日々の学習内容をブログにアウトプット / まずは月収5万円を目指す