トップページ> Ruby on Rails >Ruby on Rails 2.0.2のscaffold

Ruby on Rails 2.0.2のscaffold

| | コメント(0)

"RailsによるアジャイルWebアプリケーション開発 第2版"(オーム社)というRails開発者が著した有名な本があって、私もこちらを通読してから自分のアプリケーションを開発し始めました。これを読み始めたころはRails 1.2.3の環境であり、この本の内容をそのまま学習することができたのですが、最近Rails 2.0.2へアップデートしたところ、この本の内容と一部異なる部分がでてきました。しかも、参考となる記事が少なすぎるし。

まず、Rails 2.0.2の動的scaffoldは、オプション機能となったようです。(記事)もし動的scaffoldを使用したければ、個別にプラグインをインストールしなければなりません。

user@server$ ruby script/plugin install scaffolding

Railsでは、generateスクリプトの静的scaffold機能を使ってモデルのリスト表示、編集、削除などの基本的な機能のページを自動生成できるのが喜ばしい。しかし、Rails 1.2.Xの方法で静的scaffoldを実行すると、以下のようなエラーが表示されて先へ進みません。

user@server$ ruby script/generate scaffold model controller
...
wrong number of arguments (1 for 2)
user@server$
この静的scaffold、Rails 1.2.Xではモデルとコントローラを引数として取ったのだけれども、Rails 2.0.2ではモデルとモデルの各フィールドの型を指定するようになりました。(記事
「型」の部分は、「物理的なDBカラムよりも抽象的なRails所定の型」です。たとえばこんな感じで。

user@server$ ruby script/generate scaffold some_model \
some_id:integer \
blah:text \

引数にコントローラがでてこないけど、どこへいっちゃったの?いやいや、きちんとコントローラも勝手に作られています。上述の例では、"app/controllers/some_model_controller.rb"がきちんと作られます。別なものにしたければ、差し替えればいいし。

ところで、Rails 2.0.2の静的scaffoldが自動生成するMigrationファイルの形式が若干変わっています。(旧来の形式も利用できます。)

class SomeModels < ActiveRecord::Migration
  def self.up
    create_table :some_models do |t|
      t.integer :some_id
      t.text :blah

      t.timestamps
    end
  end

  def self.down
    drop_table :some_models
  end
end

上の出力でt.timestampsの行は、created_at:datetimeおよびupdated_at:datetimeを両方作成してくれるようです。DBレコードは作成時間と更新時間をほとんど必ず設定するので、便利になったよね。

コメントする


このブログ記事について

このページは、Webmasterが2008年2月 7日 22:34に書いたブログ記事です。

ひとつ前のブログ記事は「PerlのPgモジュールをDBI/DBD::Pgモジュールへ置き換える」です。

次のブログ記事は「pptpconfigとハッシュマーク'#'」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。