In: Ruby / Rails| technology
6 4月 2007もう少しだけ、scaffoldハックしてみます。
scaffoldは、実装の手間がかなり軽減されるので便利ではありますが、どこまで便利にできているのかについては軽く疑問です。
僕の場合、MySQLで実装しているのですが、それぞれの型に対してどういう挙動をするのか興を覚えたので、ちょっとばかり調査してみました。
というわけで、まずはテーブルから。
[mysql]
CREATE TABLE `entities` (
`id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
`status` CHAR(2),
`code` VARCHAR(20),
`number` INTEGER UNSIGNED,
`data` TEXT,
`image` BLOB,
`flag` ENUM(“0″,”1″,”2″),
`date` TIMESTAMP,
PRIMARY KEY (`id`)
)
ENGINE = InnoDB;
[/mysql]
使う頻度の高そうなCHAR・VARCHAR・INTEGER・TIMESTAMPは当然として。
挙動が変化してしまいそうなTEXT・BLOB・ENUMあたりも入れてみました。
あとは今までやってきたとおり、さくっとアプリを作って試してみます。
scaffoldでできたrhtmlのうち、一番違いが出るのはフォーム入力の部分になる【_form.rhtml】なので、そこを見てみます。
ソースはこちら。
< %= error_messages_for 'entity' %> <!--[form:entity]--> <p><label for="entity_status">Status</label><br /> < %= text_field 'entity', 'status' %></p> <p><label for="entity_code">Code</label><br /> < %= text_field 'entity', 'code' %></p> <p><label for="entity_number">Number</label><br /> < %= text_field 'entity', 'number' %></p> <p><label for="entity_data">Data</label><br /> < %= text_area 'entity', 'data' %></p> <p><label for="entity_image">Image</label><br /> </p> <p><label for="entity_flag">Flag</label><br /> < %= text_field 'entity', 'flag' %></p> <p><label for="entity_date">Date</label><br /> < %= datetime_select 'entity', 'date' %></p> <!--[eoform:entity]-->
こんなソースばっかり見せられても、ですよね。ハイ。
まとめると、こんな感じになりますね。
→ CHAR・VARCHAR・INTEGER・ENUM
→ TEXT
→ TIMESTAMP
→ BLOB
大体予想通りといえば予想通りだけど。
ENUMがラジオボタンだったり、BLOBがファイルアップロードのフォームになったりはしないんですね。
てか、BLOB型にいたっては何もないとは。
足場はあくまで足場であって、足場でしかないといういい証左ですわな。
いい勉強になりました(笑)
ゆるーく、ふわーっと、興味のままに。
自分のかたわらに置いておくメモ代わり。