29

Railsで足場を生成することとモデルを生成することの違いは何ですか? どちらかを行うことの利点/欠点は何ですか?

4

4 に答える 4

57

モデルを生成すると、モデルといくつかの関連コンポーネントが取得されます。このようなトピックを説明する私のお気に入りの方法の 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ため、実験によってプロジェクトを取り返しのつかないほど台無しにすることを心配する必要はありません。

于 2013-07-19T01:40:04.867 に答える
6

足場の生成には、モデルの生成が含まれますが、

  • RESTful ルート
  • モデルを RESTful に処理するためのすべてのアクションを備えたコントローラー
  • コントローラーが必要とするビュー
  • テスト スタブ

scaffolding は、新しい Rails ユーザーにとって良い出発点です。

于 2013-07-18T22:12:28.673 に答える