deviseのafter_sign_in_path_forをHashで華麗に書く

Pocket

Hash Selector Patternという記事を読んでいたら、コメントにdeviseのafter_sign_in_path_forをHashで華麗に書いてあるコードがあって、「おおっ」と思ったのでした。というわけで今日はRubyの話。

こんなコード

ユーザーのタイプに応じてログイン後のページを変える場合、大体こんな感じのif分岐になると思います(もしくはcase文とか)。

でもHashを使うとこんな感じに書ける。

HashのキーにProcクラスのオブジェクトを入れると、多少宣言的に書ける。lambda記法も相まって、ちょっとCoffeeScriptっぽいですよね。

JavaScriptで書いているときは、実は当たり前のように書いているコードなのだけど、Rubyになるとこういう発想がなかった。やはり言語は思考を既定するのだなーと、改めて思ったのでした。