前回:http://blogs.wankuma.com/kazuki/archive/2008/05/03/136233.aspx
なんとか、一覧っぽいのが表示されるようになった。
ここから追加、更新、削除処理を足して行けばいけてる感じになりそうだ。
しかし!!メンドクサイので、Railsのチュートリアルとかでは目玉?となるscaffoldを使ってさくっと作ってしまおう。
とりあえず、前回作ったcontrollerとviewをさくっと消す。
えぇ。Blogに書いてるから消すのに未練とかありません。
過去の未練をたちきったらジェネレータでscaffoldを選択。モデルをEmployeeにしてattribute pairsに--skip-migrationを指定してOK!
Rails2.0系のscaffoldは、1.2の頃と違っていてmodelも一緒に作ってやるぜ!ってスタンスになったらしく、モデルが既にあると、migrationを生成するあたりでこけて最後までいかないみたいだ。
その対策として--skip-migrationを指定してあげる必要がある。
これを実行すると、Ruby on Railsで有名なscaffoldの雛形が出来上がってる。とりあえず、動きを見るために実行して、http://localhost:3000/employeesにアクセス!
なんということでしょう。件数はあってるっぽいけど、列名はくっついてない。
ふむ。どうやら、モデルにどんな列があるか指定してあげないといけないようだ。(DBから読み取ってよきにはからってくれないんだ)
勉強になった。ということで、ControllerやViewを消して再挑戦。
今度はジェネレータで--skip-migrationの前に、列の定義も書いてあげる。
書き方は、列名:型といった形式みたいだ。
今回の従業員データでは、「emp_no:string name:string ent_date:date」を指定している。
ちゃんと列を指定して作ると、したのようにちゃんとデータが表示されるようになった。
一覧も出て
編集もできて
新規登録もできて
もちろん削除もできる。(一覧でDestroyをクリックしたところ。確認ダイアログがでてOKを押すと消える)
わ~い。従業員管理システムの完成だ~。
因みに、Rails2.0系の正しいscaffoldの手順は下のようになるっぽい。
- scaffoldで列名と型まできっちりと指定して作成
- migrationファイルをいじくって制約とかがあれば追加する
- マイグレーション
次からは、そうしよう。