Ruby on Rails開発のインターン (Day 36 最終日)
こんにちは、皆さん!
ついにインターン最後の日がやってきた!時間がたつのって本当に早い。インターン初日がまるで昨日のことのように感じられる。振り返ってみると、弁当たくさん作ったな(笑)
まあ、結果的にプログラミングに関して様々な知識を身につけられた気がする。すごくためになるいい経験だった。
最後の日に関してだが、おそらく新しくこれとしたことを始めることはないだろうが、ここまで僕が書いてきたコードの整理などをしてちゃんと他の人に引き継いでもらえるようにすることが主となるかな。最後の日も楽しんでいこう!
- トピック:
- 疑問:
- 問題:
- 学習した内容:
- Railsでルートを効率よく定義する方法
- 今後やってみたいこと:
- リソース:
ネステッドルートを使い、Railsにおけるルートを効率よく定義する
今回はRailsガイドでその基礎を学んだ。(Rails のルーティング | Rails ガイド)
この機能は難しくないし、僕も結構好き。もう本当にコードがきれいになる。
例えば、ネステッド状態のコントローラー、post/:id/image/:id
(簡単に言うと、たくさんの写真を持ったたくさんの投稿を持つウェブサイトであり、このように指定することでその中の一つの投稿の一つの写真を出してくれる)。このURLを書くときにshow
アクションのためだけにこう下記のように書きたくなるかもしれない。
get 'post/:id/image/:id', to: 'images#show'
しかし、これをさらにほかのアクションに対してもやらなくていけなく、それはまた大変な量のコードなのであり、間違いも発生しやすい。
だが、下記のようにネステッドの機能を使うことでこれがすごく簡単になるのだ。
resources :posts do resources :images end
これだけで基礎的なRESTfulのアクションすべてを作り出したことになる。
もちろんいくつかのアクションに制限をかけたいときも簡単。例えば、投稿のedit
アクションだけをなくしたいのなら
resources :posts, except: [:edit] do resources :images end
ネステッドルートの更にいいところはcollection
フレームが使えることだ。これがあるだけでRESTfulに該当しない基本的でないアクションも簡単に定義することができるのだ。例えば、hello
アクションをpost controller
に追加したいとする。そしたら、posts/hello
でそのURLを構築したいのなら、普通、下記のようにすればできる。
get 'posts/hello', to: 'posts#hello'
しかし、collection
があればこのように書き換えられる。
resources :posts do collection do get 'hello' end end
これはより簡単だし、何より見やすい。あとでここに何か追加したいときはそのままこの枠の中に足すだけで前半部分のposts/
をもう入れなくて済む。また、posts/
部分が変わる場合も一か所だけ変えればすべてが一緒に変わるという。
まとめ
最後の一日ということで、新しいことを始めることもできなかったが、存在するバグをいくつかすぐに直すことができたのでいいとしよう。最後にこの小さなコミュニティーに貢献できてよかった。
最後にマネージャーと少しこれからの僕のプランについて話し合った。彼は僕が来学期を終えた後、どんなことをするのか結構興味津々であった。今のところ、僕の考えでは、Airbnb, Twitter, Google, Microsoftのような大きなIT会社で働いてみたいなとは思っている(僕なんかを採用してくれるのならの話だが(笑))。明るい自分の将来を願いつつ、2か月間本当にお世話になりました。
ご精読ありがとうございました。では、また次回まで✌