Rails
RubyOnRails
初心者向け
Railsチュートリアル

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

はじめに

この記事はRuby on RailsやWebフレームワークの勉強を始めた人を対象にしており
別にRailsやscaffoldとresourcesをディスる目的じゃなく
自分がRailsをはじめて触ったときに躓いた経験を元にした内容

まずscaffoldとresourcesとは

scaffold

Railsに用意されているジェネレータの1つで「足場」を意味する
最低限のCRUDを自動で生成してくれる便利な機能
コマンド1つで、コントローラー、モデル、ビュー、ルーティングを全て用意してくれる
コマンドとしては
$ rails g scaffold モデル名 カラム名:型


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

/モデル名s/index
スクリーンショット 2017-08-03 17.51.44.png

/モデル名s/new

スクリーンショット 2017-08-03 17.58.20.png

resources

/config/routes.rbに記述するルーティングでresourceを用いると
こちらも自動でCRUDを用意してくれる
記述の仕方としては
resources :リソース名

1つのresourcesで以下のルーティングを全て用意してくれる
スクリーンショット 2017-08-03 18.07.25.png

正直開発をする時に使うとめっちゃ便利だったりする
だが、しかし
便利すぎるがゆえに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ライフを