Rails Tutorial - izudon/izudon.github.io GitHub Wiki

  • 第14章
    • 14.1,3 モデルの関連付け(「自己参照の向き」の実装)【主テーマ】
      • has_many classname: foreign_key: dependent:
        :active_relationships, :passive_relationships
        (同一クラスへの複数リレーション)
      • has_many through: source:
    • 14.2 Follow ボタン
      • routers.rb での member メソッド collection メソッド。
      • local: true -> remote: true フォームのサブミットが Ajax に。
        (ちなみに remote: true がデフォルト)
      • respond_to do |format| -> format.html format.js
        (アクションで html js 各ケースにおけるレスポンドを返すための構文)
      • (create|destroy).js.erb JavaScript の中で ERB が使える。
        (サブミット後にこいつが実行される)
      • post メソッドに , xhr: true をつければ、テストが Ajax になる。
    • 14.3 ステータスフィード
      • SQL文の IN 句にプレースホルダを使い "...IN (?)...", array で、
        配列が自動的にカンマ区切りの数列で挿入され DBMS の違いまで吸収。
      • Active Record で xxx_ids とすれば、IDの配列が返ってくる機能。
        (擬似プロパティというかプロパティのように見えるメソッド)
      • IN 句(数が多くなれば死ぬ) -> 副問合せ -> INNER JOIN
      • .map(&:xxx)
  • 第13章
    • 13.1 モデルの関連付け(マイクロポストの実装を例に)【主テーマ】
      • $ rails generate model Micropost content:text user:references
      • belongs_to, has_many, dependent: :destroy
      • default_scope -> ラムダ式, lambda式, 無名関数, Proc オブジェクト。
      • 複合キーインデックス(Multiple Key Index)
      • 子側の fixture の書き方(シンボルで書く)
    • 13.2 マイクロポストの表示
      • $ rails generate controller Microposts
        使うのはコントローラではなくビューだけでも。
      • time_ago_in_words などヘルパメソッドは、Rails コンソールから、
        helper オブジェクトを通して呼出可能。
      • User.order(:created_at).take(6)
    • 13.3 マイクロポストの操作
      • ログインのチェックを ApplicationController に移す。
        => logged_in_user がどこででも使えるようになる。
      • @user @microposts -> object
        => エラーメッセージなどのパーシャルがアプリ全体へと汎用化できる。
      • Model.where() SQLインジェクション対策のプレースホルダ。
    • 13.4 画像投稿の実装
      • $ rails active_storage:install
        $ rails db:migrate
      • バリデーション
      • jQuery によるファイルサイズの事前チェック
  • 第12章
    • 12.1 パスワード再発行の実装
      • $ rails generate controller PasswordResets new edit --no-test-framework
    • 12.2 メールの送り方
  • 第11章
    • メールの送り方(Action Mailer)【主テーマ】
      • Controller には action が書かれているように、
        Mailer にも action が書かれている。
      • Controller の action はブラウザからルータ経由などで呼び出されるものだが、
        Mailer の action は Ruby から呼び出されるものであるため引数を取れる。  
      • Mailer の action はメールオブジェクトを返す。
        返されたメールオブジェクトは .deliver などとすることで送信ができる。
      • mail によりメールオブジェクトが生まれこれが戻り値となる。
        render, redirect_to のかわりに mail to: となる。
    • Heroku 本番環境(production 環境)でのメール送信(Mailgun)。
    • ユーザー操作の一部をコントローラからモデルに移動するという
      ささやかなリファクタリング。
  • 第10章
    • 10.1 データの更新 【主テーマ】
      • newedit のフォームはほぼ同じ。
        • パーシャル _user.html.erb を使って共通化する。
        • method はともに POST になる。
          hidden を使って _method=patch で送る。
        • form_with の引数はいずれも @user で構わない。
          new_record? で新規か更新かが自動的に判断。
      • has_secure_password データ更新時「パスワード変更なし」。
        • password password_confirm 双方空欄ならパスワード変更なし。
          2箇所に同内容が入っていればパスワードも更新したいとの意に取ることにする。
        • allow: nil
          new 時は空欄なら has_secure_password 側で必須チェックがかかる。
      • a タグ rel 属性 noopener で、
        オープン元を JavaScript で 参照できない(セキュリティレベルの向上)。
    • 10.2 認可
      • フレンドリーフォワーディング
    • 10.3 ページネーション(pagenation)
      • Faker gem / db/seeds.rb / $ rails db:seed
      • will_paginate gem / bootstrap-will_paginate gem
      • リファクタリング: render で @users を直接呼び出す。
      • マイグレーションファイル add_column の default: オプション
    • 10.4 ユーザの削除
  • 第9章
    • cookie に持たせる 【主テーマ】
    • SecureRandom.urlsafe_base64
    • 囲む <label>〜</label>
    • 単体でも統合でも使える log_in_as メソッド。
    • assigns(:symbol) による、
      テストからコントローラのインスタンス変数へのアクセス。
    • 分岐の中に raise を仕込み、
      当該分岐がテストされているかいないかを調べるテクニック。
  • 第8章
    • session に持たせる 【主テーマ】
    • url:scope: 指定による form_with ヘルパ。
    • flash.now
    • find(例外発生)と find_by(nil 返す)。
    • ||= / &. safe navigation 演算子(ぼっち演算子)
    • $ yarn add [email protected] [email protected]
    • テストデータ用に手動でのハッシュ化。
      BCrypt::Password.create(string, cost: cost)
      cost = ActiveModel::SecurePassword.min_cost
  • 第7章
    • データの登録【主テーマ】
    • 7.3.2 Strong Parameters -- マスアサインメント防止手段
      (特定のキー以外取り込まないセキュリティ強化手法)
    • 7.1.3 debugger
    • flash
  • 第6章
    • 6.1 モデルの作成 【主テーマ】
    • 6.2 バリデーション
    • 6.3 パスワードの実装(has_secure_password)
  • 第5章 レイアウトを作成する
    • アセットパイプライン(レイアウト)【主テーマ】
      • 毎回変わる画像URL(キャッシュを防ぐ)
  • 第4章 Rails 風味の Ruby
    • Ruby 言語 【主テーマ】
  • 第3章 ほぼ静的なページの作成
    • ルーティング 【主テーマ】
    • テスト駆動開発
  • 第2章
    • scaffold で Rails を概観【主テーマ】
  • 第1章
    • とりあえずやってみる(動かしてみる)【主テーマ】
    • AWS Cloud9 / Heroku / GitHub / git
⚠️ **GitHub.com Fallback** ⚠️