Rails tutorialについて 6-10
随時更新、備忘録
6章
ユーザーモデルの作成
- マイグレーションについて
バリデーションについて
- テスト内にvalidatesメソットを作成して行う
- モデルレベルのバリデーションが最も適切らしい。とはいえ、使い分けは適宜
- エラーメッセージは
u.errors.messages
にて取得
正規表現
一意性
セキュアなパスワード
7章
デバッグ
- レイアウトに
<%= debug(params) if Rails.env.development? %>
を差し込むことで開発環境でデバッグ情報を表示 params
とは- コントローラーに
debugger
を差し込むことでbyebugプロンプトを表示 - Gravatar画像を表示
def gravatar_for(user) gravatar_id = Digest::MD5::hexdigest(user.email.downcase) gravatar_url = "https://secure.gravatar.com/avatar/#{gravatar_id}" image_tag(gravatar_url, alt: user.name, class: "gravatar") end
入力フォームの作成
- form_for
- ユーザー送信データを
User.new
に直接渡すのは危険なため、コントローラー内のprivate
メソッドとしてuser_params
メソッドを実装し、そこにparams.require(:user)
として渡す - Railsの慣習として、複数のビューで使われるパーシャルはsharedディレクトリに置かれる
- 状況に応じて英単語を複数形にする
pluralize
メソッド
入力フォームのテスト
- ここで改めて、Rails テスティングガイド
ユーザー登録実装
- リダイレクト後に実行される
flash
変数 flash
のためにBootstrap CSSに4つのクラスがある(success、info、warning、danger)content_tag
について。あとこちらもcontent_tag
- config/environments/production.rbの
config.force_ssl = true
をコメント解除して、SSLを強制
8章
ログインページ作成
- パイプ接続とgrep
- flash.now
- DBへの問い合わせを減らすために、User.find_byの結果をインスタンス変数に保存する
- 振り返ってsessionについて。あとQiitaのほうも。
- Railsの新バージョンは`jQueryに対応していない。対策はこちら
9章
トークン利用
- 今更ながら
attr_accessor
について。こちらも。 cookies
メソッドでクライアント側に保存。.permanent
で有効期間を20年にできる(permanetといっても永遠ではない)。- リスト9.10でログアウトできないのは、ブラウザに残っているクッキーにより@current_userへ情報が流れてしまうため。ログアウトのためにはremember_digestとクッキーを削除する必要がある。
- 三項演算子
10章
編集ページ作成
target_blank
にはnoopener
をつける認証機構の実装
- before_action
- request.original_url
- リスト 10.32にて、
redirect_back_or user
をredirect_back_or @user
にしないと働かないミスを発見 - Faker gem
アカウント削除
- method: :deleteでdestroyアクションへリンク