名前付きルートを使用する利点

【結論】

・名前付きルートとは、「パスpath」「パスurl」などの形式で、リンク先のURLを指定出来るヘルパー

・URL構造を気にせずにパスを指定出来るメリットがある

・また、SQLインジェクション対策としても用いられる

【目次】

【本題】

名前付きルートについて

名前付きルートとは、「パスpath」「パスurl」などの形式で、リンク先のURLを指定する為のヘルパーです。

下記のコードであれば、post_pathがそれにあたります。

= link_to '投稿する', post_path(@post), method: :post

なお、「パスヘルパー」や「URLヘルパー」とも呼ばれています。

URL構造を気にする必要が無くなる

これを用いる利点の一つに、URL構造を気にする必要が無くなるというものがあります。

もし、ヘルパーを使わないと、下記の様に階層が深いURLなどだと、可読性が落ちたり、

= link_to '投稿する', "accounts/#{account_id}/campaigns/#{campaign_id}/posts/#{params[:id]}/", method: :post

下記の様に、ヘルパーを使えば、随分と可読性は高まります。

= link_to '投稿する', accounts_campaigns_posts(@accounts, @campaign), method: :post

SQLインジェクションを防止出来る

もう一つの利点として、SQLインジェクションなどに対するセキュリティ対策になるという事です。

例えば、先ほどのコードですが、下記の様に書き換える事もできます。

= link_to '投稿する', "/posts/#{params[:id]}", method: :post

しかし、パラメーターは、ユーザーが任意に可変する余地がある箇所なので、これをURLに指定してしまうと、意図的に違う処理を引き起こしさせる「SQLインジェクション」の被害を受ける恐れがあります。

それを防ぐ為に、名前付きルートは役立てられています。

参考情報

Rails のルーティング - Railsガイド