環境
- Rails 8.1
Rails ジェネレーター種類大杉問題
rails scaffold 以外にもcontroller、model、さらにはscaffold_controllerやresourceなんてものもある。
scaffoldが一番使う機会が多いがすでにあるテーブルに対して追加でコントローラー生成したいということも少なくない。
いい感じの比較表が昔はあったんだが見つからなかったので自作した。
| ジェネレーター | Model | Migration | Controller | Views | Routes | Model Test | Controller Test | Helper | System Test | JSON Views |
|---|---|---|---|---|---|---|---|---|---|---|
| scaffold | ◯ | ◯ | ◯ | ◯ | ◯ | ◯ | ◯ | ◯ | ◯ | ◯ |
| scaffold_controller | ◯ | ◯ | ◯ | ◯ | ◯ | ◯ | ||||
| resource | ◯ | ◯ | ◯ | ◯ | ◯ | ◯ | ◯ | |||
| controller | ◯ | △ | △ | ◯ | ◯ | |||||
| model | ◯ | ◯ | ◯ | |||||||
| migration | ◯ |
controller は、引数でアクション名を渡したときだけ Views と Routes を自動生成するため △ にしている。
例えば rails g controller Users index show のようにアクションを指定すると、app/views/users/index.html.* などのテンプレートが作られ、同時に get "users/index" のようなルーティングも config/routes.rb に追記される。
一方で rails g controller Users のようにアクションなしで実行すると、作られるのはコントローラー本体とテスト類だけで、Views と Routes は増えない。