はじめに
この記事はRuby on RailsやWebフレームワークの勉強を始めた人を対象にしており
別にRailsやscaffoldとresourcesをディスる目的じゃなく
自分がRailsをはじめて触ったときに躓いた経験を元にした内容
まずscaffoldとresourcesとは
scaffold
Railsに用意されているジェネレータの1つで「足場」を意味する
最低限のCRUDを自動で生成してくれる便利な機能
コマンド1つで、コントローラー、モデル、ビュー、ルーティングを全て用意してくれる
コマンドとしては
$ rails g scaffold モデル名 カラム名:型
resources
/config/routes.rbに記述するルーティングでresourceを用いると
こちらも自動でCRUDを用意してくれる
記述の仕方としては
resources :リソース名
1つのresourcesで以下のルーティングを全て用意してくれる
正直開発をする時に使うとめっちゃ便利だったりする
だが、しかし
便利すぎるがゆえにMVCやHTTPメソッドをまだ理解してない初心者が
いきなりこの2つを使おうとするとフレームワーク内での動きを把握できず躓いてしまうとこが多々あるっぽい(経験談)
躓くところ
scaffold
まずは、scaffoldを使って躓くところ
上記したとおりMVC、ルーティングの全てをコマンド1つで用意してくれる
実際に
$ rails g scaffold myapp name:string age:integer
を実行すると
app/controllers/myapps_controller.rb
app/models/myapp.rb
app/views/
|- _form.html.erb
|- _myapp.json.jbuilder
|- edit.html.erb
|- index.html.erb
|- index.json.jbuilder
|- new.html.erb
|- show.html.erb
|- show.json.jbuilder
が生成される。
でもこれが以外と初見殺し
本人が意識していないところで自動生成されてしまうため
MVCをまだ理解していない人だと
「モデル?なにそれ?コントローラー?そんなもの作った覚えないよ??そもそも何なのそれ??」
と言う事態に陥ってしまい理解できずに苦しむ事になったりする。
resources
resourcesもscaffoldと同じで最低限のCRUDへのパスを自動で通してくれる
すなわち、フレームワーク初心者でHTTPメソッドをまだ理解していない人が触ると
「POST???ああ、手紙入れるやつね。GET??ポケモン??」
や
「アクション?なにそれ美味しいの?」
なんてことになるのは必然である
解決策?
この問題への解決策としては
理解できるまでは面倒くさくても1つ1つ手動で作る
だと思う。
モデルやコントローラーの作成も1つ1つコマンドで
$ rails g model モデル名 カラム名:型
$ rails g controller コントローラー名
の様に作っていく
ルーティングも
get 'ルーティング/パス' => 'コントローラー#アクション'
post 'ルーティング/パス' => 'コントローラー#アクション'
の様に手書きで作っていくのがいいと思う。
最後に
自分が初めてRailsを触ったときのことを思い出しながら書きました
もしこれからRailsを使ってみようという方、
他の人にRailsの使い方を教えようとしてる方の助けになれば幸いです。
ではよきRailsライフを