-
Notifications
You must be signed in to change notification settings - Fork 0
Rails Tutorial
Masakazu IZUI edited this page Mar 30, 2021
·
84 revisions
- 第14章
- 14.1,3 モデルの関連付け(「自己参照の向き」の実装)【主テーマ】
-
has_manyclassname:foreign_key:dependent:
:active_relationships,:passive_relationships
(同一クラスへの複数リレーション) -
has_manythrough:source:
-
- 14.2 Follow ボタン
-
routers.rbでのmemberメソッドcollectionメソッド。 -
local: true->remote: trueフォームのサブミットが Ajax に。
(ちなみにremote: trueがデフォルト) -
respond_to do |format|->format.htmlformat.js
(アクションで html js 各ケースにおけるレスポンドを返すための構文) -
(create|destroy).js.erbJavaScript の中で ERB が使える。
(サブミット後にこいつが実行される) -
postメソッドに, xhr: trueをつければ、テストが Ajax になる。
-
- 14.3 ステータスフィード
- SQL文の
IN句にプレースホルダを使い"...IN (?)...", arrayで、
配列が自動的にカンマ区切りの数列で挿入され DBMS の違いまで吸収。 - Active Record で
xxx_idsとすれば、IDの配列が返ってくる機能。
(擬似プロパティというかプロパティのように見えるメソッド) -
IN句(数が多くなれば死ぬ) -> 副問合せ -> INNER JOIN .map(&:xxx)
- SQL文の
- 14.1,3 モデルの関連付け(「自己参照の向き」の実装)【主テーマ】
- 第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インジェクション対策のプレースホルダ。
- ログインのチェックを ApplicationController に移す。
- 13.4 画像投稿の実装
-
$ rails active_storage:install
$ rails db:migrate - バリデーション
- jQuery によるファイルサイズの事前チェック
-
- 13.1 モデルの関連付け(マイクロポストの実装を例に)【主テーマ】
- 第12章
- 12.1 パスワード再発行の実装
$ rails generate controller PasswordResets new edit --no-test-framework
- 12.2 メールの送り方
- 12.1 パスワード再発行の実装
- 第11章
-
メールの送り方(Action Mailer)【主テーマ】
- Controller には action が書かれているように、
Mailer にも action が書かれている。 - Controller の action はブラウザからルータ経由などで呼び出されるものだが、
Mailer の action は Ruby から呼び出されるものであるため引数を取れる。 - Mailer の action はメールオブジェクトを返す。
返されたメールオブジェクトは .deliver などとすることで送信ができる。 -
mailによりメールオブジェクトが生まれこれが戻り値となる。
render,redirect_toのかわりにmailto:となる。
- Controller には action が書かれているように、
- Heroku 本番環境(production 環境)でのメール送信(Mailgun)。
- ユーザー操作の一部をコントローラからモデルに移動するという
ささやかなリファクタリング。
-
メールの送り方(Action Mailer)【主テーマ】
- 第10章
- 10.1 データの更新 【主テーマ】
-
newとeditのフォームはほぼ同じ。- パーシャル
_user.html.erbを使って共通化する。 -
methodはともにPOSTになる。
hiddenを使って_method=patchで送る。 -
form_withの引数はいずれも@userで構わない。
new_record?で新規か更新かが自動的に判断。
- パーシャル
-
has_secure_passwordデータ更新時「パスワード変更なし」。-
passwordpassword_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 ユーザの削除
- 10.1 データの更新 【主テーマ】
- 第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 jquery@3.4.1 bootstrap@3.4.1- テストデータ用に手動でのハッシュ化。
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