読者です 読者をやめる 読者になる 読者になる

Rails2.1 でScaffoldする時にbelongs_toを使うと

rails

rails 2.1.0 で、scaffoldの時にこんな指定ができる。
hogeテーブルに、fooの外部キーを指定したい時、
外部キーの型にbelongs_toを指定すると、勝手にidカラムを作成してくれる。便利。

$ruby script/generate scaffold hoge name:string foo:belongs_to


migrateファイルのcreate_tableが作成されて、こんな記述になる。
見ただけで、どの列がどのテーブルと関連しているかがわかる。

create_table :hoge do |t|
  t.string :name
  t.belongs_to :foo

  t.timestamps
end


データベース(今回使ったのはSQLite3)はこんな風になってる。
ちゃんと型が一致してますね。

sqlite > .schema hoge
CREATE TABLE "hoge" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255) DEFAULT NULL NULL, "foo_id" integer DEFAULT NULL NULL, "created_at" datetime DEFAULT NULL NULL, "updated_at" datetime DEFAULT NULL NULL);

データベースは確かに作られるが・・・

でも、実はビューがちゃんと作られていないようだ。

    <td><%=h place.name %></td>
    <td><%=h place.foo %></td>

データベースにはfoo_idとして作られているけど、ビューではfooとして作成されてしまう。
migrateファイル単独で使う分には便利だけど、scaffoldではちょっと注意が必要ということか。