Ruby on Rails/Âè11²óÊÙ¶¯²ñ - RESTful Rails Development http://www.ark-web.jp/sandbox/wiki/207.html
Ruby on Rails/Âè11²óÊÙ¶¯²ñ - RESTful Rails Development
Ruby on Rails/Âè11²óÊÙ¶¯²ñ - RESTful Rails Development
Ruby on RailsÊÙ¶¯²ñ°ìÍ÷ †
- Ruby on Rails
- Ruby on Rails/2.1.0¤ò»È¤Ã¤Æ¤ß¤Æ¡Ö¤ª¡ªÊѤï¤Ã¤Æ¤ë¡×¤È»×¤Ã¤¿¤È¤³¤í
- Ruby on Rails/ActiveRecord¡§¡§Observer
- Ruby on Rails/ActiveRecord¤Îfind
- Ruby on Rails/ActiveRecord¤ò¥é¥¤¥Ö¥é¥ê¤È¤·¤ÆÍøÍѤ¹¤ë
- Ruby on Rails/Ajax¤Î¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¤ò¤¢¤²¤ë5¤Ä¤ÎÊýË¡¤ÎÉôʬŪĶÌõ¥á¥â
- Ruby on Rails/apache2+FastCGI¤ÇBASICǧ¾Ú
- Ruby on Rails/check_box¤Ë¥Ç¥Õ¥©¥ë¥Èchecked¤ò¥»¥Ã¥È¤¹¤ë
- Ruby on Rails/cron¤«¤éÆüËܸì¥á¡¼¥ë¤òÁ÷¤ë¤Ë¤Ï
- Ruby on Rails/Cucumber¤ò»î¤·¤Æ¤ß¤ë
- Ruby on Rails/emacs-rails¤Î¥¤¥ó¥¹¥È¡¼¥ë
- Ruby on Rails/Fedra Core5¤ÇApache2+FastCGI¤Î¥»¥Ã¥È¥¢¥Ã¥×
- Ruby on Rails/gettext_scaffold¤Îconfirm_update
- Ruby on Rails/has_many¤Îdependent¥ª¥×¥·¥ç¥ó
- Ruby on Rails/jpmobile¤Çµ¡¼ï¤Ë±þ¤¸¤¿²èÁü¤ò½ÐÎÏ
- Ruby on Rails/JSONP¤Ç¼õ¤±¼è¤Ã¤¿¥Ç¡¼¥¿¤òEUC-JP¤ÎWeb¥Ú¡¼¥¸¤ËËä¤á¹þ¤à¤Ë¤Ï?
- Ruby on Rails/lighttpd¤ÎÀßÄê
- Ruby on Rails/PostgresSQL¤ò»È¤¦
- Ruby on Rails/Rails 2.0.2¤Ë¥¢¥Ã¥×¥°¥ì¡¼¥É
- Ruby on Rails/Rails3¤ò»î¤·¤Æ¤ß¤ë
- Ruby on Rails/Rails3´ØÏ¢
- Ruby on Rails/Rails¥×¥í¥¸¥§¥¯¥È¤òºî¤ë¤È¤¤ËºÇ½é¤Ë¤ä¤ë¤³¤È
- Ruby on Rails/RailsÊÙ¶¯²ñ¡÷ÅìµþÂè15²ó
- Ruby on Rails/RESTfulAuthentication¤Ë¸¢¸Â´ÉÍý¤òÄɲ乤ë¡Örole_requirement¡×¥×¥é¥°¥¤¥ó
- Ruby on Rails/rspec + autotest + emacs ¤Î´Ä¶¹½ÃÛ
- Ruby on Rails/rvm+passenger+mod_proxy¤ÎÀßÄê
- Ruby on Rails/Text Drive Shared Hosting»ÈÍÑ´¶
- Ruby on Rails/TextDrive¤ÇRails¤¬ÍøÍѤǤ¤ë¤è¤¦¤Ë¤Ê¤ë¤Þ¤Ç
- Ruby on Rails/¡ÖNo route matches¡×¤¬½Ð¤ë
- Ruby on Rails/¥×¥é¥°¥¤¥ó/aasm
- Ruby on Rails/¥×¥é¥°¥¤¥ó/acts_as_favorite
- Ruby on Rails/¥×¥é¥°¥¤¥ó/file_column
- Ruby on Rails/¥×¥é¥°¥¤¥ó/restful-authentication
- Ruby on Rails/¥×¥é¥°¥¤¥ó/ssl_requirement
- Ruby on Rails/¥á¥â¥ê¤ÎÌäÂê¤È¤«
- Ruby on Rails/Âè1²ó½¸ÃæÊÙ¶¯²ñ
- Ruby on Rails/Âè1²óÊÙ¶¯²ñ - TodoListTutorial
- Ruby on Rails/Âè2²óÊÙ¶¯²ñ - Routing¡§ Native Ruby Rewriting
- Ruby on Rails/Âè3²óÊÙ¶¯²ñ - Components¡§ Pursuing the Pipe Dream
- Ruby on Rails/Âè3²óÊÙ¶¯²ñ - Components¡§ Pursuing the Pipe Dream/Æ°²è
- Ruby on Rails/Âè3²óÊÙ¶¯²ñ - Components¡§ Pursuing the Pipe Dream/Æ°²è/¤½¤Î1
- Ruby on Rails/Âè3²óÊÙ¶¯²ñ - Components¡§ Pursuing the Pipe Dream/Æ°²è/¤½¤Î2
- Ruby on Rails/Âè4²óÊÙ¶¯²ñ - Active Record Reference Documentation
- Ruby on Rails/Âè4²óÊÙ¶¯²ñ - Active Record Reference Documentation/Æ°²è
- Ruby on Rails/Âè4²óÊÙ¶¯²ñ - Active Record Reference Documentation/Æ°²è/¤½¤Î1
- Ruby on Rails/Âè4²óÊÙ¶¯²ñ - Active Record Reference Documentation/Æ°²è/¤½¤Î2
- Ruby on Rails/Âè4²óÊÙ¶¯²ñ - Active Record Reference Documentation/Æ°²è/¤½¤Î3
- Ruby on Rails/Âè5²óÊÙ¶¯²ñ - ActiveRecord¡§¡§Associations
- Ruby on Rails/Âè6²óÊÙ¶¯²ñ - ActiveRecord¡§¡§Validations
- Ruby on Rails/Âè7²óÊÙ¶¯²ñ - gettext¤ò»È¤Ã¤¿validation¥¨¥é¡¼¤ÎÆüËܸ첽
- Ruby on Rails/Âè8²óÊÙ¶¯²ñ - ActionView¡§¡§Helpers
- Ruby on Rails/Âè9²óÊÙ¶¯²ñ - ActionView¡§¡§Helpers(2)
- Ruby on Rails/Âè10²óÊÙ¶¯²ñ - ActionView¡§¡§Helpers(3)
- Ruby on Rails/Âè11²óÊÙ¶¯²ñ - RESTful Rails Development
- Ruby on Rails/Âè12²óÊÙ¶¯²ñ - neco¤Ã¤¿¡¼¤ÎÃæ¿È²òÀâ
- Ruby on Rails/Âè12²óÊÙ¶¯²ñ - Rspec³µÍ×
- Ruby on Rails/Âè13²óÊÙ¶¯²ñ - Rspec¤ò»È¤Ã¤Æ¤ß¤ë
- Ruby on Rails/Âè14²óÊÙ¶¯²ñ - Rails¾å¤ÇRspec¤ò»È¤¦
- Ruby on Rails/Âè15²óÊÙ¶¯²ñ - Rolling with Rails 2.0 - The First Full Tutorial - Part 1
- Ruby on Rails/Âè15²óÊÙ¶¯²ñ - ǧ¾Ú¥×¥é¥°¥¤¥óActs as Authenticated¤Ë¤Ä¤¤¤Æ
- Ruby on Rails/ưŪ¾ò·ï¤Çhas_one¤·EagerLoad
- Ruby on Rails/Ǥ°Õ¤ÎRails¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¥¢¥×¥ê¤òÆ°¤«¤¹¤è¤¦¤ËÀßÄꤷ¤¿¤¤¾ì¹ç¤ÎÂбþ
- Ruby on Rails/È÷˺¡§¥ß¥ËTips
Âè11²óÊÙ¶¯²ñ¤Î¥Í¥¿ †
¥Í¥¿¤â¤È¤Ï²¼µ¤Ç¤¹¡£
b-simple.de - Ruby on Rails, Entwicklung, Coaching und mehr!
http://www.b-simple.de/documents
Æü»þ †
- 2006/04/13(¶â)
»²²Ã¼Ô †
Æ°²è †
RESTful Rails †
- HTTP¤ÏGET¤äPOST¥á¥½¥Ã¥É¤À¤±¤Ç¤Ê¤¯¡¢PUT, DELETE¥á¥½¥Ã¥É¤â¤¢¤ë
- REST¤È¤Ï¡¢´Êñ¤Ë¤¤¤¦¤ÈHTTP¤ÎGET, POST¤À¤±¤Ç¤Ê¤¯, PUT, DELETE¤ò»È¤Ã¤¿¤ä¤êÊý¤Ç¤¢¤ë
- Rails 1.2¤Ç¤ÏREST¤¬¥µ¥Ý¡¼¥È¤µ¤ì¤¿
- ¤³¤Î¥Á¥å¡¼¥È¥ê¥¢¥ë¤ÏREST¤Î¥³¥ó¥»¥×¥È¤ÈÇطʤÎû¤¤¾Ò²ð¤«¤é¤Ï¤¸¤Þ¤ë
- Rails¤ÎScaffold¤ò»È¤¦¤È¸«¤ë¤³¤È¤¬¤Ç¤¤ëREST-Controller¤Èmodel¤Ï¡¢RESTful Rails¤Î³«È¯¤ÎÍý²ò¤ò½õ¤±¤Æ¤¯¤ì¤ë
- ¼¡¤ËREST Routing¤È¤è¤Ð¤ì¤ëµ¡Ç½¤ÎÀâÌÀ¤ò¤¹¤ë¡£
- Nested Resources¤Î¾Ï¤Ï¤è¤ê¾åµé¤ÊÆâÍƤǡ¢¤É¤Î¤è¤¦¤ËREST-URL¤Î¥³¥ó¥»¥×¥È¤ËÈ¿¤»¤º¤Ë¡¢¿Æ»Ò´Ø·¸¤Ë¤¢¤ë¥ê¥½¡¼¥¹¤¬¥Í¥¹¥È¤µ¤ì¤ë¤«¤Ë¤Ä¤¤¤ÆÀâÌÀ¤¹¤ë
- ¤³¤Î¥Á¥å¡¼¥È¥ê¥¢¥ë¤Î½ª¤ï¤ê¤Ï¡¢REST¤ÈAJAX¤Ë¤Ä¤¤¤Æ¤ÎÀâÌÀ¤À
- RESTful¤Ê¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò¥Æ¥¹¥È¤·¡¢¥¯¥é¥¤¥¢¥ó¥È¥µ¥¤¥É¤ÎREST¤Î°ìÉô¤Ç¤¢¤ë¡¢ActiveResource¤ò¾Ò²ð¤¹¤ë
REST¤È¤Ï¤Ê¤Ë¤«? †
- REST¤È¤¤¤¦¸ÀÍÕ¤Î̾¤Å¤±¿Æ¤Ï Roy Fielding ¤À¡£
- Representational State Transfer¤Îά¤À¡£
- REST¤Ïɸ½àŪHTTP¥á¥½¥Ã¥É¤Ç¤¢¤ëGET, POST, PUT, DELETE¤ò»ÈÍѤ·¤ÆWeb¤Î¥ê¥½¡¼¥¹¤òÍ׵ᤷ¡¢Áàºî¤¹¤ëWeb¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¤¿¤á¤Î¡¢¥¢¡¼¥¥Æ¥¯¥Á¥ã¥Ñ¥é¥À¥¤¥à¤òÀâÌÀ¤¹¤ë¡£
- REST¤Ç¤Ï¥ê¥½¡¼¥¹¤ÏHTTP·Ðͳ¤ÇURL¤Ç¥¢¥É¥ì¥¹ÉÕ¤±¤·¤ÆÍ׵᤬²Äǽ¤À¡£
- ¥ê¥½¡¼¥¹¤Ï¡¢¥¯¥é¥¤¥¢¥ó¥È¤Î¸Æ¤Ó½Ð¤·¤Ë±þ¤¸¤Æ¡¢HTML¤äXML¤äRSS¤Î¤è¤¦¤Ê°Û¤Ê¤Ã¤¿¥Õ¥©¡¼¥Þ¥Ã¥È¤Çɽ¸½¤Ç¤¤ë¡£
- REST-URLs¤Ï¥æ¥Ë¡¼¥¯¤À
- ¥ê¥½¡¼¥¹URL¤Ï¡¢¤³¤ì¤Þ¤Ç¤ÎRails¤Î¥¢¥×¥ê¤È¤Ï°ã¤¤¡¢¥³¥ó¥È¥í¡¼¥é¤È¤½¤ì¤ËÂбþ¤¹¤ëAction¤Ë¤è¤Ã¤Æ·è¤Þ¤ë¤Î¤Ç¤Ï¤Ê¤¯¡¢¥ê¥½¡¼¥¹¼«¿È¤Ë¤è¤Ã¤Æ·èÄꤵ¤ì¤ë¡£
(¿Þ1.1)
- ¿Þ1.1¤Ç¤Ï¡¢3¤Ä¤Î¥ê¥½¡¼¥¹¤¹¤Ù¤Æ¤Ï¡¢URL¤Î»Ï¤Þ¤ê¤Îidentical part¤Ë¤è¤Ã¤Æ½»½êÉÕ¤±¤é¤ì¡¢¤½¤ì¤¾¤ì¤Ï¤½¤Î¥ê¥½¡¼¥¹¤ÎID¤Ë¤è¤Ã¤Æ¥Õ¥©¥í¡¼¤µ¤ì¤ë¡£
- Rails¤Ç¤Ï¥³¥ó¥È¥í¡¼¥é¤È¥â¥Ç¥ë¤ÎÁȤ߹ç¤ï¤»¤Æ¥ê¥½¡¼¥¹¤òɽ¸½¤¹¤ë¡£
- ¥Æ¥¯¥Ë¥«¥ë¤ÊΩ¾ì¤«¤é¤¤¤¦¤È¡¢¿Þ1.1¤Î¥×¥í¥¸¥§¥¯¥È¥ê¥½¡¼¥¹¤ÏProjectController¤ÈActiveRecord¤ò·Ñ¾µ¤·¤¿¥¯¥é¥¹¡ÖProject¡×¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤òÁàºî¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ±þÅú¤Ç¤¤ë
¤Ê¤¼REST? †
- MVC-Consept¤ò»ÈÍѤ·¤Æ2ǯ´ÖRails¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò¤È¤Æ¤âsuccessfully¤Ë³«È¯¤·¤Æ¤¤Æ¤¤¤ë¤³¤È¤ò¿´¤ËÊݤäƤ¤¤ë¤È¤¡¢¤³¤ì¤Ï¤è¤¤¼ÁÌä¤À¡£
- REST¥Ù¡¼¥¹¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¼¡¤ÎÆÃħ¤¬¤¢¤ë
- ¤¤ì¤¤¤ÊURL¡£
REST-URL¤Ï¥¢¥¯¥·¥ç¥ó¤Ç¤Ï¤Ê¤¯¥ê¥½¡¼¥¹¤òɽ¸½¤·¤Æ¤¤¤ë¡£
URL¤Ï¤¤¤Ä¤âƱ¤¸¥Õ¥©¡¼¥Þ¥Ã¥È¤ò¤â¤Ä¡£
ºÇ½é¤Ë¥³¥ó¥È¥í¡¼¥é¡¼¤¬¤¤Æ¡¢¤½¤ì¤«¤é»²¾È¤µ¤ì¤ë¥ê¥½¡¼¥¹¤ÎID¤¬¤¯¤ë
Í׵ᤵ¤ì¤¿Áàºî¤ÏURL¤«¤é±£¤µ¤ì¡¢HTTP ¥á¥½¥Ã¥É¤Çɽ¸½¤µ¤ì¤ë - °Û¤Ê¤Ã¤¿±þÅú¥Õ¥©¡¼¥Þ¥Ã¥È
REST¥³¥ó¥È¥í¡¼¥é¤Î¥¢¥¯¥·¥ç¥ó¤Ï°Û¤Ê¤Ã¤¿±þÅú¥Õ¥©¡¼¥Þ¥Ã¥È¤òÊÖ¤¹¤³¤È¤¬¤Ç¤¤ë¡£
¥¯¥é¥¤¥¢¥ó¥È¤ÎÍ×µá¤Ë°Í¸¤·¤Æ¡¢Æ±¤¸¥¢¥¯¥·¥ç¥ó¤¬HTML, XML, RSS¤òÊÖ¤¹¤³¤È¤¬¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤ë¡£ - ¥³¡¼¥ÉÎ̤¬¾¯¤Ê¤¤
Ê£¿ô¤Î¥¯¥é¥¤¥¢¥ó¥È¤òÊä¤Ǥ¤ë³«È¯¤ÏDRY¤Î°ÕÌ£¤Ë¤ª¤¤¤Ærepetition¤òavoid¤·¡¢¥³¥ó¥È¥í¡¼¥é¡¼¤¬¤è¤ê¾¯¤Ê¤¤¥³¡¼¥É¤â¤Ä·ë²Ì¤È¤Ê¤ë - CRUD»Ø¸þ¥³¥ó¥È¥í¡¼¥é
³Æ¥³¥ó¥È¥í¡¼¥é¤¬°ì¤Ä¤Î¥ê¥½¡¼¥¹¥¿¥¤¥×¤ÎÁàºî¤ËÂФ·¤Æ±þÅú²Äǽ¤Ç¤¢¤ë¤È¤¤¤¦ÊýË¡¤Ë¤ª¤¤¤Æ¡¢¥³¥ó¥È¥í¡¼¥é¤È¥ê¥½¡¼¥¹¤Ï²ò¤±¤Æ°ì½ï¤Ë°ì¤Äñ°Ì¤Ë¤Ê¤ë - ÌÀ³Î¤Ê¥¢¥×¥ê¥±¡¼¥·¥ç¥óÀß·×
RESTful¤Ê³«È¯¤ÏÌÀ³Î¤Ê¥³¥ó¥»¥×¥È¤Î·ë²Ì¤È¤Ê¤ê¡¢Áàºî²Äǽ¤Ê¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¥Ç¥¶¥¤¥ó¤Ë¤Ê¤ë - ¤³¤Î¥Á¥å¡¼¥È¥ê¥¢¥ë¤Î4ÈÖÌܤξϤϡ¢Îã¤Î¥Ø¥ë¥×¤ò»È¤Ã¤Æ¡¢¾åµ¤Î̾Á°ÉÕ¤±¤µ¤ì¤¿ÆÃħ¤Î¤¹¤Ù¤Æ¤òÌÀ³Î¤Ë¤¹¤ë
- ¤¤ì¤¤¤ÊURL¡£
What's New †
- ¤â¤·¡¢¤¢¤Ê¤¿¤¬¡¢REST¤Ë´ð¤Å¤¤¤¿¥¢¥×¥ê¥±¡¼¥·¥ç¥óÀ߷פ¬¤¢¤Ê¤¿¤Î²¼²áµî¤Î³«È¯·Ð¸³¤òÍøÍѤǤ¤Ê¤¯¤¹¤ë¤È¹Í¤¨¤Æ¤¤¤ë¤Ê¤é¡¢»äã¤Ï¤¢¤Ê¤¿¤òassure¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡¢¤¹¤Ê¤ï¤Á¡¢¤½¤ó¤Ê¤³¤È¤Ï¤Ê¤¤¡£
- REST¤Ï¡¢¤Þ¤ÀMVC¤Ë´ð¤Å¤¤¤Æ¤¤¤ë¤·¡¢µ»½ÑŪ´ÑÅÀ¤Ç¸«¤Æ²¼µ¡¢¤Î¿·¤·¤¤µ»½Ñ¤Øreduced¤µ¤ì¤ë¤³¤È¤¬¤Ç¤¤ë
- ¥³¥ó¥È¥í¡¼¥é¤Î¥³¡¼¥É¤Ë¤ª¤¤¤Ærespond_to¤òÍøÍѤ¹¤ë
- link¤Èform¤Î¤¿¤á¤Î¿·¤·¤¤helper¥á¥½¥Ã¥É¤¬Ä󶡤µ¤ì¤Æ¤¤¤ë
- ¥³¥ó¥È¥í¡¼¥é¥ê¥À¥¤¥ì¥¯¥È¤Ë¤ª¤±¤ëURL-Method¤ÎÍøÍÑ
- routes.rb¤ÎÃæ¤Îresource¥á¥½¥Ã¥É¤«¤éÀ¸À®¤µ¤ì¤ë¿·¤·¤¤¿·¤·¤¤·ÐÏ©
¤¢¤Ê¤¿¤Ï°ìÅÙREST¤òÍý²ò¤·¡¢¤½¤Îµ»½Ñ¤òÍøÍѤ¹¤ì¤Ð¡¢RESTful¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ÎÀ߷פϼ¡¤Îɸ½à¤È¤Ê¤ë¤À¤í¤¦¡£
Preparations †
- »ä¤¿¤Á¤Ï¡¢»ä¤¿¤Á¤ÎËÜRapidWeb Development mit Ruby on Rails¤ÎÎã¤Ç¤¢¤ë¡¢¥×¥í¥¸¥§¥¯¥È´ÉÍý¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¡ÖOntrack¡×¤Îʸ̮¤È°ì½ï¤ÎÃæ¤Ç¡¢Rails¤Î¿·¤·¤¤ÆÃÄê¤ÎÆÃħ¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Æ¤¤¤¤Þ¤¹¡£
- »ä¤¿¤Á¤Ï´°Á´¤Ê¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò¤³¤³¤Ç¤Ï³«È¯¤·¤Ê¤¤¤À¤í¤¦¤¬¡¢REST¥³¥ó¥»¥×¥È¤Î¤¿¤á¤Îµ»½ÑŪ¤Ê´Ä¶¤òºîÀ®¤¹¤ë¤¿¤á¤ËƱ¤¸µ»½Ñ¤òÍøÍѤ·¤Þ¤¹¡£
- ¤Þ¤º¡¢»ä¤¿¤Á¤ÎRails¥×¥í¥¸¥§¥¯¥È¤ÎÀ¸À®¤ò¤Ï¤¸¤á¤Þ¤·¤ç¤¦
> rails ontrack
²¼µ¤Î¤è¤¦¤Ëdevelopment¤Ètest¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤òºîÀ®¤·¤Þ¤¹> mysql -u rails Enter password: mysql> create database ontrack_development; mysql> create database ontrack_test; mysql> quit
Rails 1.2 †
- »ä¤¿¤Á¤Ï¡¢¤¹¤Ù¤Æ¤ÎÆɼԤ¬Rails1.2¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤¿¤¤¤È¤ª¤â¤Ã¤Æ¤¤¤Ê¤¤¤«¤â¤·¤ì¤Ê¤¤¤È»×¤¤¤Þ¤¹¡£
- ¤½¤³¤Ç»ä¤¿¤Á¤Ï¡¢»ä¤¿¤Á¤Îontrack¤ÎÎã¤Î¤ß¤¬¿·¤·¤¤¥Ð¡¼¥¸¥ç¥ó¤ò¤Ä¤«¤¦¤è¤¦¤Ë¡¢¥×¥í¥¸¥§¥¯¥È¥Ù¡¼¥¹¤Î1.2¤ÎRails¥¤¥ó¥¹¥È¥ì¡¼¥·¥ç¥ó¤ò¤¹¤ë¤³¤È¤ò¤ª¤¹¤¹¤á¤¹¤ë¡£
- ¥É¥¥å¥á¥ó¥È¤Ë¤½¤Ã¤ÆRails1.2¤Î¥¿¥°¤Ïrel_1-2-1¤È̾¤Å¤±¤é¤ì¤ë¡£
> cd ontrack > rake rails:freeze:edge TAG=rel_1-2-1
- Ê̤ÎRails¤Î¤è¤ê¿·¤·¤¤¥Ð¡¼¥¸¥ç¥ó¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¾ðÊó¤Ïrails¤ÎWeb¥µ¥¤¥È¡¢http://www.rubyonrails.org¤Ç¸«¤Ä¤«¤ë¡£
Resource Scaffolding †
- REST»Ø¸þ¤ÎRails³«È¯¤Ï¡¢¿·¤·¤¤scaffold¥¸¥§¥Í¥ì¡¼¥¿¤Ç¤¢¤ëscaffold resource¤«¤éºîÀ®¤µ¤ì¤ë¡¢¥ê¥½¡¼¥¹¡ÖProject¡×¤È¤È¤â¤Ë´Êñ¤ËÉÁ¤¯¤³¤È¤¬¤Ç¤¤ë¡£
- ¥¸¥§¥Í¥ì¡¼¥¿¤Ï¡¢¥ê¥½¡¼¥¹Ì¾¤Ç¤¢¤ë¡Öproject¡×¤È¤¤¤¦¥Ñ¥é¥á¡¼¥¿¤È¥ª¥×¥·¥ç¥Ê¥ë¤Ê¥â¥Ç¥ë¤Î°À¤Î¥ê¥¹¥È¤È¡¢¤½¤ì¤é¤Î¥¿¥¤¥×¤òÍ¿¤¨¤é¤ì¤ë
- ¤³¤ì¤é¤Î°À¤Ï¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î¥Þ¥¤¥°¥ì¡¼¥·¥ç¥ó¥¹¥¯¥ê¥×¥È¤È¡¢ºîÀ®¤µ¤ì¤ë¥Ó¥å¡¼¤Îappropriate¥Õ¥£¡¼¥ë¥É¤â¤Þ¤¿É¬ÍפȤµ¤ì¤ë¡£
ruby script/generate scaffold_resource project name:string desc:text
exists app/controllers/ exists app/helpers/ create app/views/projects exists test/functional/ exists test/unit/ create app/views/projects/index.rhtml create app/views/projects/show.rhtml create app/views/projects/new.rhtml create app/views/projects/edit.rhtml create app/views/layouts/projects.rhtml create public/stylesheets/scaffold. create app/models/project.rb create app/controllers/projects_controller. create test/functional/projects_controller_ create app/helpers/projects_helper. create test/unit/project_test.rb create test/fixtures/projects.yml create db/migrate create db/migrate/001_create_projects. route map.resources :projects
- ¥¸¥§¥Í¥ì¡¼¥¿¤Ï¥â¥Ç¥ë¤À¤±¤Ç¤Ê¤¯¡¢¥³¥ó¥È¥í¡¼¥é¡¢¥Ó¥å¡¼¤½¤·¤Æ¡¢µ¡Ç½Åª¤Ê¥Þ¥¤¥°¥ì¡¼¥·¥ç¥ó¥¹¥¯¥ê¥×¥È¤È¿·¤·¤¤¥Þ¥Ã¥Ô¥ó¥°¥¨¥ó¥È¥ê¡¡map.resources rojects ¤òconfig/routes.rb¤ÎÃæ¤Ë¡¢À¸À®¤·¤¿¡£
- ¤½¤ì¤Ï¡¢»ä¤¿¤Á¤Î¥³¥ó¥È¥í¡¼¥é¡¼¤¬Resultful¤ÊURL¤ËÂФ·¤Æ±þÅú¤Ç¤¤ë¤è¤¦¤Ê¥Þ¥Ã¥Ô¥ó¥°¤Î¥¨¥ó¥È¥ê¡¼¤À¡£
The Model †
- »ä¤¿¤Á¤ÏºÇ½é¤Ë¸À¤Ã¤¿¤è¤¦¤Ë¡¢REST¤Î¥ê¥½¡¼¥¹¤Ï¡¢¥³¥ó¥È¥í¡¼¥é¤È¥â¥Ç¥ë¤Î¥³¥ó¥Ó¥Í¡¼¥·¥ç¥ó¤Îʸ̮¤Ç¤¢¤ë¡£
- ¥â¥Ç¥ë¤Ï¡¢Ä̾ï¤ÎActiveRecord::Base:¤ò·Ñ¾µ¤·¤¿ActiveRecord¥¯¥é¥¹¤À¡£
class Project < ActiveRecord::Base end
- ¤Ê¤Î¤Ç¡¢¥â¥Ç¥ë¤Î¾ì¹ç¤Ï¡¢¤Ê¤Ë¤â¿·¤·¤¤¤³¤È¤ò³Ø¤Ö¤³¤È¤Ï¤Ê¤¤¡£
¤·¤«¤·¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î¥Æ¡¼¥Ö¥ë¤òºî¤ë¤Î¤Ï˺¤ì¤Ê¤¤¤è¤¦¤Ë¡£> rake db:migrate
The Controller †
- À¸À®¤µ¤ì¤¿ProjectsController¤Ï¡¢Project¥ê¥½¡¼¥¹¤òÁàºî¤¹¤ë¤¹¤ë¡¢CRUD-Controller¤À¡£
- ¤³¤ì¤Ï¡¢¥³¥ó¥È¥í¡¼¥é¤ÏÀµ³Î¤Ë°ì¤Ä¤Î¥ê¥½¡¼¥¹¥¿¥¤¥×¤Ë°¤·¡¢»Í¤Ä¤ÎCRUD¤ÎÁàºî¤½¤ì¤¾¤ì¤ÎÀ߷פµ¤ì¤¿¥¢¥¯¥·¥ç¥ó¤òÄ󶡤¹¤ë¤³¤È¤ò°ÕÌ£¤¹¤ë¡£
class ProjectsController < ApplicationController # GET /projects # GET /projects.xml def index... # GET /projects/1 # GET /projects/1.xml def show... # GET /projects/new def new... # GET /projects/1;edit def edit... # POST /projects # POST /projects.xml def create... # PUT /projects/1 # PUT /projects/1.xml def update... end # DELETE /projects/1 # DELETE /projects/1.xml def destroy... end end
- ¤â¤·¡¢¤¢¤Ê¤¿¤¬À¸À®¤µ¤ì¤¿¥³¥ó¥È¥í¡¼¥é¤ò¤ß¤ë¤Ê¤é¡¢¿·¤·¤¤¤â¤Î¤ò¤½¤³¤Ë¤Ï¤ß¤Ä¤±¤Ê¤¤¤À¤í¤¦¡£
- ¤¹¤Ê¤ï¤Á¡¢¥×¥í¥¸¥§¥¯¥È¤òÀ¸À®¡¢¸¡º÷¡¢¹¹¿·¤¹¤ë¤¿¤á¤Î¥¢¥¯¥·¥ç¥ó¤¬¤¢¤ë¡£
- ¥³¥ó¥È¥í¡¼¥é¤È¥¢¥¯¥·¥ç¥ó¤ÎξÊý¤Ï¡¢ºÇ½é¤Î¥°¥ì¡¼¥¹¤ÇÉáÄ̤˸½¤ì¤ë
- ¤·¤«¤·¡¢¤½¤ì¤é¤Ï¡¢HTTP Æ°»ì(?)¤Ë¤è¤Ã¤Æ´Þ¤Þ¤ì¤ë¥ê¥¯¥¨¥¹¥ÈURL¤Î´ØÏ¢¤òɽ¼¨¤¹¤ë¡¢À¸- À®¤µ¤ì¤¿¥³¥á¥ó¥È¤ò¤â¤Ã¤Æ¤¤¤ë
- ¤½¤³¤Ë¤ÏREST-URL¤¬¤¢¤ê¡¢¼¡¤Î¥»¥¯¥·¥ç¥ó¤Ç¾Ü¤·¤¯¸«¤Æ¤¤¤¯¡£
REST-URLs †
- REST-URL¤Ï¡¢¤³¤ì¤Þ¤Ç¤Îralis¤Î¤è¤¦¤Ê controller/action/id¤Î·Á¼°¤Ç¤Ï¤Ê¤¤
- controller̾¤Î¤¢¤È¤ËID¤¬¤¯¤ë
/projects/1
- Action¤¬¤Ê¤¤¤¬¡¢¤½¤ì¤ÏHTTP Method¤Ç¤¤Þ¤ë
HTTP Verb REST-URL Action URL without REST GET /projects/1 show GET /projects/show/1 DELETE /projects/1 destroy GET /projects/destroy/1 PUT /projects/1 update POST /projects/update/1 POST /projects create POST /projects/create - URL¤ÏPOST°Ê³°¤Ï¤ß¤ó¤ÊƱ¤¸¡£POST¤Î¾ì¹ç¤Ï¡¢¿·µ¬¤ËºîÀ®¤À¤«¤é¡¢¤Þ¤ÀID¤¬·è¤Þ¤Ã¤Æ¤¤¤Ê¤¤
- Web¥Ö¥é¥¦¥¶¤ÏDELETE¤ÈPUT¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Ê¤¤
- Rails¤Ï¡¢¥ê¥½¡¼¥¹¤òºï½ü¤¹¤ë¤¿¤á¤Î¥ê¥ó¥¯¤òÀ¸À®¤¹¤ë¤¿¤á¤ÎÆüì¤Ê¥Ø¥ë¥Ñ¡¼¤òÄ󶡤·¤Þ¤¹
- POST¥ê¥¯¥¨¥¹¥È¤Îhidden¥Õ¥£¡¼¥ë¥É¤Ç¥µ¡¼¥Ð¡¼¤ÇDELETE¥á¥½¥Ã¥É¤ËÊÑ´¹¤µ¤ì¤ë(1.8.3¤ÇÀâÌÀ)
- PUT¥ê¥¯¥¨¥¹¥È¤âƱÍÍ(1.8.2¤ÇÀâÌÀ)
REST actions are using respond to †
- REST action¤Ï¤³¤È¤Ê¤ë¥ì¥¹¥Ý¥ó¥¹¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç¡¢¤³¤È¤Ê¤ë¥¯¥é¥¤¥¢¥ó¥È¥¿¥¤¥×¤ËÈ¿±þ¤¹¤ë¤³¤È¤¬¤Ç¤¤ë
- Web ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¤¿¤á¤Îŵ·¿Åª¥¯¥é¥¤¥¢¥ó¥È¥¿¥¤¥×¤Ï¤â¤Á¤í¤ó¥Ö¥é¥¦¥¶¥¯¥é¥¤¥¢¥ó¥È¤Ç¤¢¤ë¤¬¡¢Web¥µ¡¼¥Ó¥¹¥¯¥é¥¤¥¢¥ó¥È¤ÏXML¤òͽ´ü¤¹¤ë¤·¡¢RSS¥ê¡¼¥À¡¼¤ÏRSS¤äAtom¥Õ¥©¡¼¥Þ¥Ã¥È¤òͽ´ü¤¹¤ë
- ¥¯¥é¥¤¥¢¥ó¥È¤Ë¤è¤Ã¤Æ¥ê¥¯¥¨¥¹¥È¤µ¤ì¤¿²óÅú¥Õ¥©¡¼¥Þ¥Ã¥È¤ÎÀ¸À®¤Î¤¿¤á¤ÎÃæ±û¤Î¥³¥ó¥È¥í¡¼¥ë¥¤¥ó¥¹¥¿¥ó¥¹¤Ï¡¢respond to¥á¥½¥Ã¥É¤Ç¤¢¤ë¡£
- ¤³¤ì¤Ï¡¢¤¹¤Ç¤Ë¡¢scafforldgenerater¤Ë¤è¤Ã¤Æ¡¢CRUD¥¢¥¯¥·¥ç¥ó¤ÎÃæ¤Ë¡¢À¸À®¤µ¤ì¤Æ¤¤¤ë¡£
- ¼¡¤Î¥³¡¼¥É¤ÎÃÇÊÒ¤Ïshow¥¢¥¯¥·¥ç¥ó¤Ç¤Îrespond_to¤ÎÍøÍÑÎã¤À
# GET /projects/1 # GET /projects/1.xml def show @project = Project.find(params[:id]) respond_to do |format| format.html # show.rhtml format.xml { render :xml => @project.to_xml } end end
- respond to¤Ï¥Õ¥©¡¼¥Þ¥Ã¥È¤òÆÃÄꤷ¤¿»Ø¼¨¤ò¤È¤â¤Ê¤¦¥Ö¥í¥Ã¥¯¤ò»ý¤Ã¤Æ¤¤¤ë
- Îã¤Ç¤Ï¡¢Æó¤Ä¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤ò½èÍý¤·¤Æ¤¤¤ë: HTML, XML
- ¤Ê¤Ë¤âµ¯¤³¤é¤Ê¤±¤ì¤Ðshow.rhtml¤ò»È¤Ã¤¿HTML¤¬¤«¤¨¤ë
- ¤â¤·¡¢¥Õ¥©¡¼¥Þ¥Ã¥È¤¬XML¤Ê¤éXML¤¬ÊÖ¤ë
- respond_to¤Ï¡Öaccept¡×HTTP¥Ø¥Ã¥À¤Îaccept¥Õ¥£¡¼¥ë¥É¤«¡¢URL¤Î½ñ¼°(³ÈÄ¥»Ò¤Ê¤É)¤ÇȽÄꤹ¤ë
Accept-Field of the HTTP-Header †
- ¡Öcurl¡×¥³¥Þ¥ó¥É¤ò»È¤¦¤È¡¢HTTP¥Ø¥Ã¥À¤¬´Êñ¤ËÁàºî¤Ç¤¤ë
- Accept¥Ø¥Ã¥À¤Ëapplication/xml¤ò»ØÄꤷ¤Æ¡¢GET¤·¤Æ¤ß¤ë
curl -H "Accept: application/xml" -i -X GET http://okra.ark-web.jp/~shida/sandbox/restful_rails/projects
Format specification via the URL †
- ¼¡¤ÎURL¤ÇXMLɽ¸½¤òÍ×µá¤Ç¤¤ë
http://localhost:3000/projects/1.xml
REST-URLs and Views †
- link_to¤ÏREST URL¤ËÂбþ¤·¤Ê¤¤
- link¤È¥Ü¥¿¥ó¤Ë¤è¤Ã¤Æ¡¢HTTP ¥á¥½¥Ã¥É¤ÈURL¤òÁ÷¿®¤Ç¤¤ë¤³¤È¤¬½ÅÍ×
- Path¥á¥½¥Ã¥É¤ò¸Æ¤Ö¤³¤È¤Çhash¤¬ÃÖ¤´¹¤¨¤é¤ì¤ë
- controller ¤Èaction¤Èproject_id¤ÎÂؤï¤ê¤Ëproject path(:id) ¤¬ÍøÍѤµ¤ì¤ë
link_to "Show", project_path(project) => <a href="/projects/1">Show</a>
- URL¤¬REST URL¤Ë¤Ê¤Ã¤Æ¤¤¤ë
- ¥Ç¥Õ¥©¥ë¥È¤Ç¤ÏGET
- ¡ÖTable 1.2: Standard Path-Methods¡×¤Ë¤¢¤ë¤è¤¦¤Ë¡¢¥ê¥½¡¼¥¹¤´¤È¤Ë¡¢Rails¤Ï7¤Ä¤Îɸ½àŪ¤Ê¥ê¥ó¥¯¤òÀ¸À®¤¹¤ë
- ¤½¤ì¤¾¤ì¤Î¥Ñ¥¹¥á¥½¥Ã¥É¤ÏHTTP¥á¥½¥Ã¥É¤È´ØÏ¢¤Å¤±¤é¤ì¡¢link¤ä¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤È¡¢¥µ¡¼¥Ð¡¼¤ØÁ÷¤é¤ì¤ëHTTP¥á¥½¥Ã¥É¤Ç¤¢¤ë¤³¤È¤ò°ÕÌ£¤¹¤ë
- show¤Èupdate¤Ï¡¢GET¤ÈPOST¤Ê¤Î¤Ç¤½¤Î¤Þ¤Þ
- create¤Èdelete¤Ï¡¢hidden ¥Õ¥£¡¼¥ë¥É¤ò»È¤Ã¤¿¡¢Æüì¤ÊÊýË¡¤Ç¼è¤ê°·¤ï¤ì¤ëɬÍפ¬¤¢¤ë¡£
- ¤³¤ì¤Ï¥Ö¥é¥¦¥¶¤ÏPUT, DELETE¤Ï²ò¼á¤Ç¤¤Ê¤¤¤¿¤á¤À¡£
Path-Method HTTP verb Path Requested Action projects_path GET /projects index project_path(1) GET /projects/1 show new_project_path GET /projects/new new edit_project_path(1) GET /projects/1;edit edit projects_path POST /projects create project_path(1) PUT /projects/1 update project_path(1) DELETE /projects/1 destroy - ɽ¤ÎºÇ½é¤ÎÆó¤Ä¤Ï¥ª¥Ã¥±¡¼
- new_project_path¤Èedit_project_path¤Ï¡¢REST URL¤È¥Þ¥Ã¥Á¤·¤Ê¤¤
New and Edit †
- New-Link¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤ÈGET¤Ç¥µ¡¼¥Ð¡¼¤ËÁ÷¿®¤µ¤ì¤ë
link_to "New", new_project_path => <a href="/projects/new">New</a>
- ¤³¤ì¤ÏREST¤Îů³Ø¤ò²õ¤¹¤«?
- new¤ÏCRUD¥¢¥¯¥·¥ç¥ó¤Ç¤Ï¤Ê¤¤¡£¤³¤ì¤Ï¥ê¥½¡¼¥¹¤òÀ¸À®¤¹¤ë¤¿¤á¤Î½àÈ÷¤Ç¤¢¤ë¡£
- new¥Õ¥©¡¼¥à¤ÏºÇ½ªÅª¤Ë¥µ¥Ö¥ß¥Ã¥È¤µ¤ì¤ë»þ¡¢¤Ï¤¸¤á¤ÆCRUD¤Îcreate¥¢¥¯¥·¥ç¥ó¤¬¼Â¹Ô¤µ¤ì¤ë
- ¤³¤Î¥¢¥¯¥·¥ç¥ó¤Ïnew¥Õ¥©¡¼¥à¤òɽ¼¨¤¹¤ë»þ¤À¤±»ÈÍѤµ¤ì¤ë
- edit_project_path¥á¥½¥Ã¥É¤âƱÍÍ¡£CRUD¥¢¥¯¥·¥ç¥ó¤Îupdate¤Î½àÈ÷¤Î¤¿¤á¤Ë»ÈÍѤµ¤ì¤ë
- edit¥Õ¥©¡¼¥à¤ò¥µ¥Ö¥ß¥Ã¥È¤µ¤ì¤¿»þ¤Ë¼ÂºÝ¤Îupdate¥¢¥¯¥·¥ç¥ó¤¬¼Â¹Ô¤µ¤ì¤ë
- À¸À®¤µ¤ì¤ëhref°À¤Ï¼¡¤Î¤è¤¦¤Ê¤â¤Î
edit_project_path¤Ènew_project_path¤Î°ã¤¤¤Ïid¤¬É¬Íפ«¤É¤¦¤« link_to "Edit", edit_project_path(project) => <a href="/projects/1;edit">Edit</a>
- CRUD¤Ç¤Ï¤Ê¤¤¤Î¤Ç¡¢new¤âedit¤âURL¤ÎÃæ¤Ë¥¢¥¯¥·¥ç¥ó¤¬Æþ¤ë¤Î¤ÏÌäÂê¤Ê¤¤
- ¤³¤Î¸¶Â§¤Ïɸ½à¤ÎCRUD¤Ç¤Ï¤Ê¤¤¥¢¥¯¥·¥ç¥ó¤Î̾Á°¤ò³«È¯¤¹¤ë»þ¤âÍøÍѤǤ¤ë
Path-Methods in forms: Create and Update †
- REST¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¤Ï¡¢form_for¤äform_tag¤ÎURL¥Ï¥Ã¥·¥å¤Ï¡¢path¥á¥½¥Ã¥É¤ËÃÖ¤´¹¤¨¤é¤ì¤ë
- new¥Õ¥©¡¼¥à¤Î¤¿¤á¤Ëprojects_path¤ÏÍøÍѤµ¤ì¤ë
- edit¥Õ¥©¡¼¥à¤Î¤¿¤á¤Ëproject_path(:id)¤ÏÍøÍѤµ¤ì¤ë
The New Form †
- °ìÈÌŪ¤ÊPOST¤Ç¥µ¡¼¥Ð¡¼¤ËÁ÷¿®¤µ¤ì¤ë
- ID¤Ê¤·¤Îprojects_path¤Ï/projects¤Ë¤Ê¤ë
form_for(:project, :url => projects_path) do |f| ... => <form action="/projects" method="post">
The Edit Form †
- REST¤Ç¤Ïupdate¤Ï¡¢PUT¥á¥½¥Ã¥É¤Ç¥ê¥¯¥¨¥¹¥È¤µ¤ì¤ë
- ¤Ç¤â¡¢PUT¤âDELETE¤âWeb¥Ö¥é¥¦¥¶¤Ç¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Ê¤¤
- Rails¤Î¥½¥ê¥å¡¼¥·¥ç¥ó¤Ï¡¢form_for¤Î:html_hash¥ª¥×¥·¥ç¥ó¤Ç¡¢¥á¥½¥Ã¥É»ØÄê¤ò¤¹¤ëÊýË¡¤À¡£
form_for(:project, :url => project_path(@project), :html => { :method => :put }) do |f| ... => <form action="/projects/1" method="post"> <div style="margin:0;padding:0"> <input name="_method" type="hidden" value="put" /> </div>
- _method¤È¤¤¤¦hidden¥Õ¥£¡¼¥ë¥É¤¬À¸À®¤µ¤ì¤Æ¤¤¤ë
- ¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã¤¬¤³¤ÎÃͤò¤ß¤Æ¡¢update¥¢¥¯¥·¥ç¥ó¤ò¸Æ¤Ó½Ð¤·¤Æ¤¯¤ì¤ë¡£
Destroy †
- show¤Èdelete¤Ç¤Ïproject_path¤ò»È¤¦
link_to "Show", project_path(project) link_to "Destroy", project_path(project), :method => :delete
- destroy¤Î¥ê¥ó¥¯¤À¤±¡¢:method¥¢¥¯¥·¥ç¥ó¤¬¤¢¤ë¡£
- Web¥Ö¥é¥¦¥¶¤ÏDELETE¥á¥½¥Ã¥É¤ò¥µ¥Ý¡¼¥È¤·¤Ê¤¤¤Î¤Ç¡¢Rails¤Ï¡¢¼¡¤Î¤è¤¦¤ÊJavaScript¤òÀ¸À®¤¹¤ë
link_to "Destroy", project_path(project), :method => :delete => <a href="/projects/1" onclick="var f = document.createElement(¡Çform¡Ç); f.style.display = ¡Çnone¡Ç; this.parentNode.appendChild(f); f.method = ¡ÇPOST¡Ç; f.action = this.href; var m = document.createElement(¡Çinput¡Ç); m.setAttribute(¡Çtype¡Ç, ¡Çhidden¡Ç); m.setAttribute(¡Çname¡Ç, ¡Ç_method¡Ç); m.setAttribute(¡Çvalue¡Ç, ¡Çdelete¡Ç); f.appendChild(m);f.submit(); return false;">Destroy</a>
- JavaScript¤¬¥Õ¥©¡¼¥à¤òÀ¸À®¤·¤Æ¡¢_method¥Ñ¥é¥á¡¼¥¿¤Ä¤¤ÇPOST¥á¥½¥Ã¥É¤Çsubmit¤·¤Æ¤¤¤ë¡£
- Rails¤Î¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã¤¬¤³¤Î¥Ñ¥é¥á¡¼¥¿¤ò²ò¼á¤·¤Ædestroy¥¢¥¯¥·¥ç¥ó¤¬¸Æ¤Ð¤ì¤ë¡£
tag: Ruby on Rails, ÊÙ¶¯²ñ