はじめに
Scaffoldを使用する機会があったのですが、基本的なrails g scaffoldしか使用したことがなかったなと思い、特に使えそうなコマンドを調べ、コマンド集として纏めてみました。
折角なので、合わせてgenerateコマンドも纏めてみました。
こんなコマンドもある、このコマンドは違う、などあればコメントにてご教示いただけますと嬉しいです。
コマンド一覧
※generateは全て省略してgと書いています。
基本的なgenerateコマンド
Modelの作成
Model、Migrationファイルを作成する
$ rails g model [Model名] [columns / name:string state:referencesなど]
Controllerの作成
ControllerとViewを作成するscaffold_controller(後述)と異なり、RESTを意識していないController名で指定した名称がそのまま使用されるので注意が必要(リソースを扱うContollerで複数形にする必要がある場合はsを最初から書いておかないとダメ)
$ rails g controller [Controller名] [オプション(アクション名)]
Migrationファイルの作成
$ rails g migration [Class名] [columns]
rails generate migrationコマンドまとめによると
クラス名は何でもOKだけど「アクション+テーブル名」とかが慣例っぽいです。
らしいです。
アセットファイルを生成する
$ rails g assets [Model名]
スペックファイルを生成する
$ rails g rspec:model [Model名]
generateを取り消したい場合
$ rails destroy [作成した対象/controllerとか] [Model名]
Scaffold系
基本的なScaffold
Model、Controller、View、Routing、Assetsを作成する
$ rails g scaffold [モデル名(スネークケース)] [各種カラム]
ScaffoldでControllerとViewのみ作成する
- 既にモデルを作成済の場合は以下のコマンドで
ControllerとViewを作成する(RESTfulなコントローラが作成される) - このコマンドでは
Routingは行ってくれないため、別途手動で定義が必要
$ rails g scaffold_controller [Model名] [カラム名]
# 指定したカラムのフィールドがViewに定義される作成済みModelがある状況でScaffoldで作成されるControllerやViewが欲しい時
既にModelを作成済みの場合は、以下の作業を行えば rails g scaffold [Model] [column]を実行した場合と同じ状況になります。
- 以下のコマンドを実行
$ rails g scaffold_controller [作成済Model名] [定義されているcolumn / name:stringなど]
$ rails g assets [作成済Model名]
config/routes.rbを修正
config/routes.rb
Rails.application.routes.drawdoresources:model_name# 作成済みModel名を記述end最後に
調べてみたら、 generateもScaffoldも思っていた以上にレパートリーがあって驚きました。generateコマンドやScaffoldについて、使ったことがないものや知らなかったものがあったのでこの記事を定期的に確認して定着させようと思います。