Railsで足場を生成することとモデルを生成することの違いは何ですか? どちらかを行うことの利点/欠点は何ですか?
4 に答える
モデルを生成すると、モデルといくつかの関連コンポーネントが取得されます。このようなトピックを説明する私のお気に入りの方法の 1 つは、実際に試してみるか、他の人に試してもらうことです。したがってrails generate model Foo name:string description:text
、Rails プロジェクト内でコマンドを入力すると、次のようになります。
invoke active_record
create db/migrate/20130719012107_create_foos.rb
create app/models/foo.rb
invoke test_unit
create test/unit/foo_test.rb
create test/fixtures/foos.yml
最初の行は を呼び出しますActive Record
。これにより、基本的にモデルがデータベースに結び付けられます。次の行は、移行ファイルと呼ばれるものを作成します。移行ファイルには、データベースを変更するための指示が含まれています。この最初の移行ファイルは、「foos」というデータベース テーブルを作成し、「name」と「description」の列も作成します。
次の行は、モデル自体を作成します。モデルは基本的に Active Record を継承した Ruby クラスです。これが意味することは、Active Record で呼び出すことができるすべてのメソッドをモデルで呼び出すことができるようになったことです。最後の 3 行は基本的に、モデルに関連するテスト ファイルを作成します。RSpec を使用していた場合は、代わりにスペック ファイルが作成されます。
Rails アプリケーションにモデルのみが含まれている場合、ページに情報を表示するビューはなく、情報の流れを制御する命令もありません。コントローラーも生成する (ビューを生成する) か、モデル、ビュー、コントローラーを生成し、routes.rb ファイルに書き込む scaffold を生成するかを選択できます。私が走った場合、私rails generate scaffold foo
は得るでしょう:
invoke active_record
create db/migrate/20130719013307_create_foos.rb
create app/models/foo.rb
invoke test_unit
create test/unit/foo_test.rb
create test/fixtures/foos.yml
invoke resource_route
route resources :foos
invoke scaffold_controller
create app/controllers/foos_controller.rb
invoke erb
create app/views/foos
create app/views/foos/index.html.erb
create app/views/foos/edit.html.erb
create app/views/foos/show.html.erb
create app/views/foos/new.html.erb
create app/views/foos/_form.html.erb
invoke test_unit
create test/functional/foos_controller_test.rb
invoke helper
create app/helpers/foos_helper.rb
invoke test_unit
create test/unit/helpers/foos_helper_test.rb
invoke assets
invoke coffee
create app/assets/javascripts/foos.js.coffee
invoke scss
create app/assets/stylesheets/foos.css.scss
invoke scss
identical app/assets/stylesheets/scaffolds.css.scss
あなたの質問に答えると、足場の利点は、迅速かつ簡単で、すべてが事前に構成されていることです。ただし、スキャフォールドとは独立してモデルを生成する (次に、必要に応じてコントローラー/ビューを生成し、routes.rb ファイルを自分で作成する) ことの利点は、アプリとその外観と機能をより細かく制御できることです。必要のないコードは、動作駆動開発またはテスト駆動開発を採用することができます。
私の最後のアドバイスは次のとおりです。Rails は非常に使いやすいので、いろいろ試してみてください。generate
対応するコマンドを使用して任意のコマンドを元に戻すことができるdestroy
ため、たとえば、rails destroy scaffold Foo
によって生成されたすべてのファイルが削除されるrails generate Scaffold Foo name:string description:string
ため、実験によってプロジェクトを取り返しのつかないほど台無しにすることを心配する必要はありません。
足場の生成には、モデルの生成が含まれますが、
- RESTful ルート
- モデルを RESTful に処理するためのすべてのアクションを備えたコントローラー
- コントローラーが必要とするビュー
- テスト スタブ
scaffolding は、新しい Rails ユーザーにとって良い出発点です。