はじめに
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.draw do
resources :model_name # 作成済みModel名を記述
end
最後に
調べてみたら、 generate
もScaffold
も思っていた以上にレパートリーがあって驚きました。
generate
コマンドやScaffold
について、使ったことがないものや知らなかったものがあったのでこの記事を定期的に確認して定着させようと思います。