generate scaffold とRialsの最初のステップ(1(.2) or 2.0)

「script\generate scaffold」について、1(.2)系と 2.0系でちょっと違ってきてるわけだ。メインとなる引数まで違ってきてる。どういうことなんだろうか。取敢えずプロジェクトのはじめ方はそれぞれこんな感じになるのだと思う。

Rails 1.2.

  1. railsコマンドでプロジェクト作成、そしてDB設定とか
  2. モデルの作成、generate model <モデル名>
    1. DBマイグレーションファイルを編集してDBフィールドを書く
    2. マイグレーション実行
  3. コントローラ作成、generate contoroller <コントローラ名>
    1. コントローラファイル修正、scaffoldメソッドにモデル名のシンボルを書いてやる
      • そのモデルの基本的な CRUD(Create/Show/Update/Destroy)画面が動的自動生成される、そのURLはコントロール名称の配下
  4. generate scaffold <モデル名> <コントローラ名> で CRUD画面のテンプレートを生成
    1. <コントローラ名> は省略可能、その時はコントロールURLとしてはモデル名が採用される
    2. 以後はテンプレートをいろいろいじって下さい

Rails 2.0

  1. railsコマンドでプロジェクト作成、そしてDB設定とか
  2. モデルとコントローラとテンプレートを一気に作成 generate scaffold <モデル名>
    1. DBマイグレーションファイルが出来てるので、それを実行
    2. モデル名と同じコントローラ名で基本的な CRUD(Create/Show/Update/Destroy)画面のテンプレートが出来てるのでどうぞ
      • そのモデルの CRUDコントローラの名前とURLは基本的にモデル名と同じになります

まあなんだ、ちょっと趣きは異なっているけど、手数は減ってる。モデル名と CRUDコントローラ名が基本的に同じというのは CoC なんだよね。

なんか最初にテーブル定義をきっちり考えとかないと scaffoldコマンドが実行しちゃいけないような気がしたんだけど気のせいでした。1(.2)だって、最初のマイグレーションファイルはそんなもんだった。まあ、コマンドライン一行で書かないといけないのなんだけど、モデルを考えるとき、最初に想定すべき大事なフィールドは一行で収まるくらいのものだろうという指針でも掲げようか。

DBのフィールド定義は Rails的にどんどん追加・変更あり、それはどんどん従来どおり「generate migration」してけばいいだろう。
別に名のあるコントローラ(複数のモデルに関係するやつとかかな)を作りたければ従来どおり「generate controller」すればいいだろう。
という事で。