1. ホーム
  2. ruby-on-rails

[解決済み】Rails: モデルがすでに存在するときに`rails generate scaffold`を実行するにはどうすればよいですか?

2022-04-13 14:15:45

質問

私はRailsの初心者なので、現在のプロジェクトは奇妙な状態になっています。

最初に生成したのは、"Movie" というモデルでした。その後、より詳細に定義し始め、いくつかのメソッドを追加するなどしました。

で生成するべきだったことに今更ながら気がつきました。 rails generate scaffold ルーティング、ビュー、コントローラなどをフックするためです。

scaffoldingを生成しようとしましたが、同じ名前のマイグレーションファイルがすでに存在するというエラーが発生しました。

今、私の"Movie"のためにscaffoldingを作成するための最良の方法は何でしょうか?(rails 3を使用しています)

どのように解決するのですか?

TL;DR : rails 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 . わかりやすくするために、それに関する記述を以下に示します。

scaffoldされたコントローラとそのビューをスタブ化します。モデル名を渡します。 CamelCased または under_scored のどちらか、および view のリストを引数として指定します。 コントローラの名前は、モデルの複数形として取得されます。 という名前になります。

モジュール内にコントローラを作成する場合、モデル名を parent_module/controller_name' のようなパスです。

これにより、app/controllersにコントローラクラスが生成され、ヘルパーが呼び出されます。 テンプレートエンジン、およびテストフレームワークのジェネレータです。

リソースの作成には resource ジェネレータ、そしてマイグレーションを作成するために migration ジェネレータがあります (ほら、この狂気の沙汰にはパターンがあるでしょ)。これらは、リソースを構築するために必要なファイルを作成するためのオプションを提供します。別の方法として、単に rails generate scaffold と共に --skip オプションで、存在するファイルをスキップすることができます :)

ジェネレータの中のオプションに時間をかけて見ることをお勧めします。本などにはあまり書かれていないような気がしますが、とても便利なものです。