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 データの更新 【主テーマ】
-
new
と edit
のフォームはほぼ同じ。
- パーシャル
_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章 レイアウトを作成する
- 第4章 Rails 風味の Ruby
- 第3章 ほぼ静的なページの作成
- 第2章
-
scaffold で Rails を概観【主テーマ】
- 第1章
-
とりあえずやってみる(動かしてみる)【主テーマ】
- AWS Cloud9 / Heroku / GitHub / git
⚠️ **GitHub.com Fallback** ⚠️