Ruby on Rails 2.0.2のscaffold
"RailsによるアジャイルWebアプリケーション開発 第2版"(オーム社)というRails開発者が著した有名な本があって、私もこちらを通読してから自分のアプリケーションを開発し始めました。これを読み始めたころはRails 1.2.3の環境であり、この本の内容をそのまま学習することができたのですが、最近Rails 2.0.2へアップデートしたところ、この本の内容と一部異なる部分がでてきました。しかも、参考となる記事が少なすぎるし。
まず、Rails 2.0.2の動的scaffoldは、オプション機能となったようです。(記事)もし動的scaffoldを使用したければ、個別にプラグインをインストールしなければなりません。
Railsでは、generateスクリプトの静的scaffold機能を使ってモデルのリスト表示、編集、削除などの基本的な機能のページを自動生成できるのが喜ばしい。しかし、Rails 1.2.Xの方法で静的scaffoldを実行すると、以下のようなエラーが表示されて先へ進みません。
...
wrong number of arguments (1 for 2)
user@server$
「型」の部分は、「物理的なDBカラムよりも抽象的なRails所定の型」です。たとえばこんな感じで。
some_id:integer \
blah:text \
引数にコントローラがでてこないけど、どこへいっちゃったの?いやいや、きちんとコントローラも勝手に作られています。上述の例では、"app/controllers/some_model_controller.rb"がきちんと作られます。別なものにしたければ、差し替えればいいし。
ところで、Rails 2.0.2の静的scaffoldが自動生成する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レコードは作成時間と更新時間をほとんど必ず設定するので、便利になったよね。
コメントする