Rails2.1 でScaffoldする時にbelongs_toを使うと
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ではちょっと注意が必要ということか。