LoginSignup
2
0

More than 3 years have passed since last update.

【随時更新】Railsのgenerateコマンド集【Scaffoldもあるよ!】

Posted at

はじめに

Scaffoldを使用する機会があったのですが、基本的なrails g scaffoldしか使用したことがなかったなと思い、特に使えそうなコマンドを調べ、コマンド集として纏めてみました。
折角なので、合わせてgenerateコマンドも纏めてみました。
こんなコマンドもある、このコマンドは違う、などあればコメントにてご教示いただけますと嬉しいです。

コマンド一覧

generateは全て省略してgと書いています。

基本的なgenerateコマンド

Modelの作成

  • ModelMigrationファイルを作成する
$ rails g model [Model名] [columns / name:string state:referencesなど]

Controllerの作成

  • ControllerViewを作成する
  • 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

  • ModelControllerViewRoutingAssetsを作成する
$ rails g scaffold [モデル名(スネークケース)] [各種カラム]

ScaffoldでControllerとViewのみ作成する

  • 既にモデルを作成済の場合は以下のコマンドでControllerViewを作成する(RESTfulなコントローラが作成される)
  • このコマンドではRoutingは行ってくれないため、別途手動で定義が必要
$ rails g scaffold_controller [Model名] [カラム名]
# 指定したカラムのフィールドがViewに定義される

作成済みModelがある状況でScaffoldで作成されるControllerViewが欲しい時

既に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

最後に

調べてみたら、 generateScaffoldも思っていた以上にレパートリーがあって驚きました。
generateコマンドやScaffoldについて、使ったことがないものや知らなかったものがあったのでこの記事を定期的に確認して定着させようと思います。

参考記事

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0