#june29jp

Rails の Routing あれこれ

2015-07-28

やろうとしたこと

users っていうリソースの下に image っていうルーティングを追加して、指定 User のアイコン画像を返してくれるようなアクションを定義したかった、とかそういう状況。

case1

まず思い付くままに書いてみたら params に渡るキーが user_id になっちゃったのよね。他のアクションでは id だから、これだと処理を共通化しにくくて困る。

case2

とにかく欲しいルーティングを手に入れる!と思って resources の外に強引に書いたケース。欲しいものは手に入ったけれど、コードの納まりが悪くてなんだかな〜という気持ちになる。

case3

member を指定すればよいのだった、と気付いて case1 に member を付けた版の実装を試す。これでまぁ、すっきりしたコードで欲しかったルーティングは手に入ったのだけれど、case1 と case3 を比べてみると user_image_pathimage_user_path の違いがあることに気付いて、これをリファレンスなしでも言えるようにはなれないな〜と思った。なんか collection の方は明示してやらないといけない理由がわかるのだけれど、member の方の指定の有無で微妙に挙動が変わるのも、なかなか理解が難しいとあらためて思った。

another case

Rails の Routing の細かい挙動を「こういうときはこう、こういうときはこのオプション付ける」とか覚えるより、そういうのに依存しないコードにした方がよいのでは〜?という気持ちになった。つまり Rails - Resource Routingつらくね? - Qiita みたいなお話です。

Rails の Routing は開発者間の共通認識を育てるのにはだいぶ貢献してくれていて、そこで共通認識を持てたもの同士なら、列挙型で書いてしまってよいのでは〜、と思った次第です。よもやま。

この記事は、もともと下記に投稿されたものです。

http://june29.hatenablog.jp/entry/2015/07/28/130741

おもしろかったら、シェアやブックマークや送金などぜひぜひお願いします。サイト運営の励みになります!

シェアや送金などお待ちしています!