web-dev-qa-db-ja.com

モデルが既に存在している場合に `Rails generate scaffold`を実行するにはどうすればいいですか?

私はRailsが初めてなので、現在のプロジェクトは奇妙な状態にあります。

私が最初に作成したものの1つは "Movie"モデルです。それから私はそれをより詳細に定義し始め、いくつかのメソッドを追加するなど.

ルーティング、ビュー、コントローラなどをつなぐためにRails generate scaffoldを使って生成したほうがいいと気付きました。

足場を生成しようとしましたが、同じ名前の移行ファイルが既に存在するというエラーが表示されました。

私の「映画」のための足場を今作成するための私にとって最良の方法は何ですか? (Rails 3を使用)

319
Lan

TL; DRRails g scaffold_controller <name>

モデルはすでにありますが、Rails generateオプションを使用して必要なコントローラファイルと移行ファイルを生成することもできます。 Rails generate -hを実行すると、利用可能なすべてのオプションを見ることができます。

Rails:
  controller
  generator
  helper
  integration_test
  mailer
  migration
  model
  observer
  performance_test
  plugin
  resource
  scaffold
  scaffold_controller
  session_migration
  stylesheets

モデルのコントローラスキャフォールドを生成したい場合は、scaffold_controllerを参照してください。わかりやすくするために、その説明を次に示します。

足場のコントローラとそのビューをスタブアウトします。モデル名(CamelCasedまたはunder_scored)とビューのリストを引数として渡します。コントローラ名は、モデル名の複数形のバージョンとして取得されます。

モジュール内にコントローラを作成するには、モデル名を 'parent_module/controller_name'のようなパスとして指定します。

これはapp/controllersにコントローラークラスを生成し、ヘルパー、テンプレートエンジン、そしてテストフレームワークジェネレータを呼び出します。

リソースを作成するにはresourceジェネレータを使用し、移行を作成するにはmigrationジェネレータを表示することもできます(この狂気のすべてに対するパターンがあります)。これらは、不足しているファイルを作成してリソースを構築するためのオプションを提供します。あるいは、Rails generate scaffoldオプションを指定して--skipを実行し、存在するファイルをすべてスキップすることもできます。

私は発電機の中の選択を見るのにしばらく時間を費やすことを勧めます。それらは私が本などで非常によく文書化されているとは思わないものですが、彼らは非常に便利です。

570
Lee Jarvis

Lee Jarvisによる素晴らしい答え、これは単なるコマンドです。すでにUserという既存のモデルがあります。

Rails g scaffold_controller User
62
tokhi

既存のデータベースを使ってRailsアプリを起動している人のために、scaffoldスクリプトを生成するためのschema_to_scaffoldというクールなgemがあります。それは出力します:

Rails g scaffold users fname:string lname:string bdate:date email:string encrypted_password:string

あなたのschema.rbから私達のあなたの名前が変更されたschema.rb.チェックしてください

29
frenesim

このコマンドはうまくいくはずです。

$ Rails g scaffold movie --skip
12
Andrew Hendrie

scaffold_controllerを利用してモデルのattributesを渡すことを忘れないでください、そうでなければ足場は属性なしで生成されます。

Rails g scaffold_controller User name email
# or
Rails g scaffold_controller User name:string email:string

このコマンドは以下のファイルを生成します。

create  app/controllers/users_controller.rb
invoke  haml
create    app/views/users
create    app/views/users/index.html.haml
create    app/views/users/edit.html.haml
create    app/views/users/show.html.haml
create    app/views/users/new.html.haml
create    app/views/users/_form.html.haml
invoke  test_unit
create    test/controllers/users_controller_test.rb
invoke  helper
create    app/helpers/users_helper.rb
invoke    test_unit
invoke  jbuilder
create    app/views/users/index.json.jbuilder
create    app/views/users/show.json.jbuilder
7
Deepak Mahakale

Rails 5では、まだ実行できます

$Rails generate scaffold movie --skip

足りない足場ファイルをすべて作成する

Rails generate scaffold_controller Movie

コントローラとビューのみを作成します。

より良い説明のためにチェックしてください Rails scaffold

7
Nesha Zoric