scaffoldはどこまで有能か

もう少しだけ、scaffoldハックしてみます。
scaffoldは、実装の手間がかなり軽減されるので便利ではありますが、どこまで便利にできているのかについては軽く疑問です。
僕の場合、MySQLで実装しているのですが、それぞれの型に対してどういう挙動をするのか興を覚えたので、ちょっとばかり調査してみました。


というわけで、まずはテーブルから。

MySQL:
  1. CREATE TABLE `entities` (
  2.   `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  3.   `status` CHAR(2),
  4.   `code` VARCHAR(20),
  5.   `number` INTEGER UNSIGNED,
  6.   `data` TEXT,
  7.   `image` BLOB,
  8.   `flag` ENUM("0","1","2"),
  9.   `DATE` TIMESTAMP,
  10.   PRIMARY KEY (`id`)
  11. )
  12. ENGINE = INNODB;

使う頻度の高そうなCHAR・VARCHAR・INTEGER・TIMESTAMPは当然として。
挙動が変化してしまいそうなTEXT・BLOB・ENUMあたりも入れてみました。

あとは今までやってきたとおり、さくっとアプリを作って試してみます。
scaffoldでできたrhtmlのうち、一番違いが出るのはフォーム入力の部分になる【_form.rhtml】なので、そこを見てみます。
ソースはこちら。

HTML:
  1. <%= error_messages_for 'entity' %>
  2.  
  3. <!--[form:entity]-->
  4. <p><label for="entity_status">Status</label><br />
  5. <%= text_field 'entity', 'status'  %></p>
  6.  
  7. <p><label for="entity_code">Code</label><br />
  8. <%= text_field 'entity', 'code'  %></p>
  9.  
  10. <p><label for="entity_number">Number</label><br />
  11. <%= text_field 'entity', 'number'  %></p>
  12.  
  13. <p><label for="entity_data">Data</label><br />
  14. <%= text_area 'entity', 'data'  %></p>
  15.  
  16. <p><label for="entity_image">Image</label><br />
  17. </p>
  18.  
  19. <p><label for="entity_flag">Flag</label><br />
  20. <%= text_field 'entity', 'flag'  %></p>
  21.  
  22. <p><label for="entity_date">Date</label><br />
  23. <%= datetime_select 'entity', 'date'  %></p>
  24. <!--[eoform:entity]-->

こんなソースばっかり見せられても、ですよね。ハイ。
まとめると、こんな感じになりますね。

  • テキストフィールド
  •  → CHAR・VARCHAR・INTEGER・ENUM

  • テキストエリア
  •  → TEXT

  • プルダウン(日付専用)
  •  → TIMESTAMP

  • 何もない(!)
  •  → BLOB

大体予想通りといえば予想通りだけど。
ENUMがラジオボタンだったり、BLOBがファイルアップロードのフォームになったりはしないんですね。
てか、BLOB型にいたっては何もないとは。
足場はあくまで足場であって、足場でしかないといういい証左ですわな。
いい勉強になりました(笑)

このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加 |

0 Responses to “scaffoldはどこまで有能か”


  1. No Comments

Leave a Reply