名前付きルートを使いこなす
記事を書く理由
名前付きルートはページを指定するときに便利。
しかしヘルパー名が似ており(むしろ同じなので)、使うときに何を使えばいいかサッと出てこない。
そんな小さな悩みですが解決するため一度整理します。
流れとゴール
- 名前付きルートを指定しようとすると毎回混乱するので、まずは混乱ポイントを整理
- _pathヘルパーからアクションを推測できるように覚え方を定義しておく
そもそも名前付きルートとは
「リソースフルなルーティングを作成したときに使えるようになるヘルパーのこと」です
resources :users の例
routes.rbでresources :usersを定義すると使えるようになるヘルパー

混乱ポイント
- 同じヘルパー名が存在する
users_path や user_path(:id)
単数形と複数形が存在する
例)
POST/usersusers_path
PATCH/users/:iduser_path(:id)
DELETE/users/:iduser_path(:id)リクエストと合わせて考えれば1人のユーザーを登録したり更新、削除するヘルパーだと推測できるのに、ヘルパー名は単数形と複数形があり混乱する。
解決策
- 特定のユーザーが既に存在するアクションは単数形と覚える
GETuser_path(:id)→ showアクション
PATCHuser_path(:id)→ updateアクション
DELETEuser_path(:id)→ destroyアクション
POSTusers_pathはユーザーを新規作成するパス。現時点で特定のユーザーが存在しないので、複数形のusersを使っている。
POSTusers_path→ createアクション
残りは自力で覚える
GETusers_path→ indexアクション
GETnew_user_path→ newアクション
GETedit_user_path(:id)→ editアクション以上の3つはヘルパー名とリクエストから推測しやすいので自力で覚えましょう。
おまけ)pathヘルパーとurlヘルパーの使い分け
- _pathヘルパーには、対応する_urlヘルパーが存在する
- _urlヘルパーは、_pathの前に現在のホスト名、ポート番号、パスのプレフィックスが追加されている
→ 簡単に言えばurlを指定している
どう使い分ければいいの?
redirect_toでは_urlヘルパーが推奨されてたりするけど、基本どちらを使っても動く。あんまり気にしなくていい。
バリデーションの種類
バリデーションとは
データの内容が正しいかどうかチェックする仕組み。
validationは「検証」、 validは「妥当である」という意味。
バリデーションの種類(オプション)
presence必須のデータが入っているか?uniquenessデータが一意(複数存在しない)か?length文字列の長さが適切か?format正しいフォーマットか?
オプションと引数の組み合わせ
maximum → 最大文字数の制限
minimum → 最低文字数の制限
length: { maximum: 255 }
case_sensitive: false → 大文字と小文字を区別する
uniqueness: { case_sensitive: false }
バリデーションの書き方
検証を行うデータベースに対応するモデル内で行う
validates :カラム名, オプション名: {引数} 複数の検証でも可能
(例)
validates :content, presence: true, length: {maximum: 140}}
validates :email, presence: true, uniqueness: { case_sensitive: false}