LoginSignup
0
0

More than 3 years have passed since last update.

Railsチュートリアルメモ - 第10章

Last updated at Posted at 2020-03-12

メモの目次記事はこちら

公式Railsチュートリアル第10章へのリンク

サマリ

  • ユーザーの更新・表示・削除を行えるようにする
    • 認可モデル (Authorization Model)
      • 認証 (authentication) :サイトのユーザーを識別すること
      • 認可 (authorization) :そのユーザーが実行可能な操作を管理すること
    • beforeフィルター (before_action)
    • フレンドリーフォワーディング
    • seeds.rbを使ったデータ作成
    • ページネーション
    • Strong Parameters

ポイント

  • Active Recordのnew_record?を使うと、既存レコードか新規レコードかを判定できる
  • モデル内でhas_secure_passwordを設定した項目は更新時にnilだった場合、更新されない
  • モデルはreloadメソッドでDBの最新データを再読み込みできる e.g. @user.reload
  • request.original_urlでリクエスト先が取得できる
  • redirectの後に書かれている処理も実行される
    • 明示的にreturn文やメソッド内の最終行が呼び出されない限り、リダイレクトは発生しない

e.g.

def redirect_back_or(default)
  redirect_to(session[:forwarding_url] || default)
  session.delete(:forwarding_url)
end
  • Faker gemを使うとダミーの名前を作成できる e.g.
name  = Faker::Name.name
  • rails db:migrate:resetでDBデータがリセットできる
    • サーバーが起動しているとエラーになることがあるらしい
  • will_pagenate gemを使うとページネーションを作成できる。具体的には以下が利用できるようになる。
    1. ビューに<%= will_paginate %>タグを埋め込むとページリンクを作成してくれる
    2. paginateメソッドを使うと指定したページに合わせてoffset-limitしてデータを取得してくれる
      • e.g. User.paginate(page: 1)
    3. params[:page]にページ番号を設定してくれる
  • renderメソッドは以下の動きをする
    • ファイル名 => パーシャルを探す
    • userなどのモデルから生成したオブジェクト => _user.html.erbを探す
    • @usersなどのモデルから生成したオブジェクトのリスト => 自動でコレクションを生成してパーシャルを呼び出す
  • rails generate migration add_xxx_to_yyy column:typeで生成したmigrationファイル内の追加カラムはdefault値はnilになる。
  • default値を変えたい場合は, default: falseのように指定する。
  • boolean型のカラムを追加した場合はカラム名?型の真偽値判定メソッドが使用できるようになる e.g. user.admin?
  • toggle!(シンボル)でboolean値を反転させられる。e.g. user.toggle!(:admin)
  • assert_no_difference {数値} {ブロック}でブロック内の処理を実行しても数値が変化しないことをテストできる
  • assert_difference {数値}, {変化値} {ブロック}でブロック内の処理を実行したときに数値が変化値だけ変化することをテストできる
  • heroku pg:reset DATABASEでherokuのDBデータをリセットできる

感想

  • 7章でのユーザー作成の後、8~9章にかけてのログイン周りのパートが(重要な部分ではあるものの)セキュリティに関する内容などを含みテンポが悪くあまり楽しい内容ではなかったので、10章は純粋にRailsでのコードの書き方に戻ってきた感じがして楽しめた。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0