scaffoldはどこまで有能か

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型にいたっては何もないとは。
足場はあくまで足場であって、足場でしかないといういい証左ですわな。
いい勉強になりました(笑)


Comment Form

About this blog

ゆるーく、ふわーっと、興味のままに。

自分のかたわらに置いておくメモ代わり。

Photostream