Edited at

Rails初心者はscaffoldとresourcesを使うな

More than 1 year has passed since last update.


はじめに

この記事はRuby on RailsやWebフレームワークの勉強を始めた人を対象にしており

別にRailsやscaffoldとresourcesをディスる目的じゃなく

自分がRailsをはじめて触ったときに躓いた経験を元にした内容


まずscaffoldとresourcesとは


scaffold

Railsに用意されているジェネレータの1つで「足場」を意味する

最低限のCRUDを自動で生成してくれる便利な機能

コマンド1つで、コントローラー、モデル、ビュー、ルーティングを全て用意してくれる

コマンドとしては

$ rails g scaffold モデル名 カラム名:型




出来るビューはこんな感じ


/モデル名s/index

/モデル名s/new



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ライフを