<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>RubyOnRails 2.1 - What's New!</title>
    <link>http://rails21-book.springnote.com/pages</link>
    <description>RubyOnRails 2.1 - What's New!</description>
    <language>ko-KR</language>
    <item>
      <title>01. &#50529;&#54000;&#48652;&#47112;&#53076;&#46300;</title>
      <description>&lt;h1&gt;&#50529;&#54000;&#48652;&#47112;&#53076;&#46300;&lt;/h1&gt;
&lt;p&gt;&#50529;&#54000;&#48652;&#47112;&#53076;&#46300;(ActiveRecord)&#45716; &#50528;&#54540;&#47532;&#52992;&#51060;&#49496;&#44284; &#45936;&#51060;&#53552;&#48288;&#51060;&#49828; &#44036;&#51032; &#49345;&#54840;&#50868;&#50857;&#49457;(interoperability)&#51012; &#45812;&#45817;&#54616;&#45716; &#44061;&#52404;-&#44288;&#44228; &#47605;&#54609; &#44228;&#52789;&#51060;&#51088; &#45936;&#51060;&#53552; &#52628;&#49345;&#54868;&#47484; &#45812;&#45817;&#54616;&#44592;&#46020; &#54620;&#45796;. (&#52636;&#52376;: &#50948;&#53412;&#54588;&#46356;&#50612;)&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;sum&lt;/strong&gt; &#47700;&#49436;&#46300;&lt;/h2&gt;
&lt;h3&gt;&lt;strong&gt;sum&lt;/strong&gt; &#47700;&#49436;&#46300; &#54364;&#54788;&#49885;&lt;/h3&gt;
&lt;p&gt;&#51060;&#51228; &#50696;&#47484; &#46308;&#47732; &lt;strong&gt;sum&lt;/strong&gt;&amp;nbsp;&#44057;&#51060;, &#44228;&#49328;&#51012; &#52376;&#47532;&#54616;&#45716;&amp;nbsp;&lt;strong&gt;&#50529;&#54000;&#48652;&#47112;&#53076;&#46300;&lt;/strong&gt; &#47700;&#49436;&#46300;&#50640;&#49436; &#49885;(expression)&#51012;&amp;nbsp;&#49324;&#50857;&#54624; &#49688; &#51080;&#44172; &#46104;&#50632;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;Person.sum("2 * age")&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;sum method&#51032; &#46356;&#54260;&#53944; &#48152;&#54872;&#44050; &#48320;&#44221;&lt;/h3&gt;
&lt;p&gt;&#51060;&#51204; &#48260;&#51204;&#50640;&#49436;&#45716;, &#47564;&#50557; &#50864;&#47532;&#44032; &lt;strong&gt;&#50529;&#54000;&#48652;&#47112;&#53076;&#46300;&lt;/strong&gt;&#51032;&amp;nbsp;&lt;strong&gt;sum&lt;/strong&gt; &#47700;&#49436;&#46300;&#47484; &#49324;&#50857;&#54616;&#50668; &#53580;&#51060;&#48660;&#51032; &#47784;&#46304; &#54665;&#51032; &#54633;&#51012; &#44228;&#49328;&#54616;&#45716;&#45936; &#51080;&#50612;, &#47700;&#49436;&#46300; &#54840;&#52636; &#49884;&#50640; &#51456; &#51312;&#44148;&#50640; &#48512;&#54633;&#54616;&#45716; &#54665;&#51060; &#50500;&#47924; &#44163;&#46020; &#50630;&#51012; &#44221;&#50864;, &#46356;&#54260;&#53944; &#48152;&#54872;&#44050;&#51008; &lt;strong&gt;nil&lt;/strong&gt;&#51060;&#50632;&#45796;.&lt;/p&gt;
&lt;p&gt;&#47112;&#51068;&#49828; 2.1&#50640;&#49436;&#45716;, &#46356;&#54260;&#53944; &#48152;&#54872;&#44050;(&#51593;, &#50500;&#47924; &#54665;&#46020; &#48156;&#44204;&#46104;&#51648; &#50506;&#51008; &#44221;&#50864;)&#51008; 0&#51060;&#45796;. &#50696;&#51228;&#47484; &#48372;&#51088;:&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;Account.sum(:balance, :conditions =&amp;gt; '1 = 2') #=&amp;gt; 0&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Has_one&lt;/h2&gt;
&lt;h3&gt;through &#50741;&#49496; &#51648;&#50896;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;has_one&lt;/strong&gt; &#47700;&#49436;&#46300;&#50640; &lt;strong&gt;through&lt;/strong&gt; &#50741;&#49496;&#51060; &#49373;&#44220;&#45796;. &#51060;&#44163;&#51008; &#47560;&#52824;&amp;nbsp;&lt;strong&gt;has_many :through&lt;/strong&gt; &#52376;&#47100; &#46041;&#51089;&#54616;&#51648;&#47564;, &#54616;&#45208;&#51032; &lt;strong&gt;&#50529;&#54000;&#48652;&#47112;&#53076;&#46300;&lt;/strong&gt; &#44061;&#52404;&#50640; &#45824;&#54620; &#50672;&#44288;&#51012; &#54364;&#54788;&#54620;&#45796;&#45716; &#51216;&#51060; &#45796;&#47476;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;class Magazine &amp;lt; ActiveRecord::Base&lt;br /&gt;
has_many :subscriptions&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
class Subscription &amp;lt; ActiveRecord::Base&lt;br /&gt;
belongs_to :magazine&lt;br /&gt;
belongs_to :user&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
class User &amp;lt; ActiveRecord::Base&lt;br /&gt;
has_many :subscriptions&lt;br /&gt;
has_one :magazine, :through =&amp;gt; : subscriptions,&lt;br /&gt;
:conditions =&amp;gt; ['subscriptions.active = ?', true]&lt;br /&gt;
end&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Has_one&#51060; :source_type&#51012; &#44032;&#51664;&lt;/h3&gt;
&lt;p&gt;&#50526;&#49436; &#50616;&#44553;&#54620; &lt;strong&gt;has_one :through&lt;/strong&gt; &#47700;&#49436;&#46300;&#45716; &#46608;&#54620; &lt;strong&gt;:source_type&lt;/strong&gt;&#51012; &#52712;&#54624; &#49688;&#46020; &#51080;&#45796;. &#51060; &#48512;&#48516;&#51008; &#50696;&#51228;&#47484; &#44032;&#51648;&#44256; &#49444;&#47749;&#54616;&#44192;&#45796;. &#45796;&#51020;&#44284; &#44057;&#51008; &#46160; &#44060;&#51032; &#53364;&#47000;&#49828;&#47196; &#49884;&#51089;&#54616;&#51088;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;class Client &amp;lt; ActiveRecord::Base&lt;br /&gt;
has_many :contact_cards&lt;br /&gt;
&lt;br /&gt;
has_many :contacts, :through =&amp;gt; :contact_cards&lt;br /&gt;
end&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#50668;&#44592; &#48372;&#51064; &#44163;&#51008; &lt;strong&gt;Client&lt;/strong&gt; &#53364;&#47000;&#49828;&#44032; &#50668;&#47084; &#51333;&#47448;&#51032; &#52968;&#53469;(contacts)&#51012; &#44032;&#51648;&#45716;(&lt;strong&gt;has_many&lt;/strong&gt;) &#44221;&#50864;&#51064;&#45936;, &#50780;&#45264;&#47732; &lt;strong&gt;ContactCard&lt;/strong&gt; &#53364;&#47000;&#49828;&#44032; &#45796;&#54805;&#51201; &#50672;&#44288;&#44288;&#44228;(polymorphic relationship)&#47484; &#44054;&#44592; &#46412;&#47928;&#51060;&#45796;.&lt;/p&gt;
&lt;p&gt;&#45796;&#51020; &#45800;&#44228;&#47196;&#45716;, &lt;strong&gt;ContactCard&lt;/strong&gt;&#47484; &#54364;&#54788;&#54616;&#45716; &#46160; &#44060;&#51032; &#53364;&#47000;&#49828;&#47484; &#47564;&#46308;&#51088;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;class Person &amp;lt; ActiveRecord::Base&lt;br /&gt;
has_many :contact_cards, :as =&amp;gt; :contact&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
class Business &amp;lt; ActiveRecord::Base&lt;br /&gt;
has_many :contact_cards, :as =&amp;gt; :contact&lt;br /&gt;
end&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Person&lt;/strong&gt;&#44284; &lt;strong&gt;Business&lt;/strong&gt;&#45716; &lt;strong&gt;ContactCard&lt;/strong&gt; &#53580;&#51060;&#48660;&#51012; &#53685;&#54644;(through) &#45236;&amp;nbsp;&lt;strong&gt;Client&lt;/strong&gt; &#53364;&#47000;&#49828;&#50752; &#50672;&#44208;&#46108;&#45796;. &#45796;&#49884; &#47568;&#54616;&#47732;, &#45208;&#45716; &#46160; &#51333;&#47448;&#51032; &#52968;&#53469;, &#51593; &#44060;&#51064;&#51201;&#51064; &#44163;(personal)&#44284; &#50629;&#47924;&#51201;&#51064; &#44163;(business)&#51012; &#44032;&#51652;&#45796;&#45716; &#47568;&#51060;&#45796;.&lt;/p&gt;
&lt;p&gt;&#44536;&#47111;&#51648;&#47564; &#51060;&#44148; &#51089;&#46041;&#54616;&#51648; &#50506;&#51012; &#44163;&#51060;&#45796;. &#45236;&#44032; &#52968;&#53469;&#51012; &#52628;&#52636;&#54616;&#47140;&#54616;&#47732; &#50612;&#46500; &#51068;&#51060; &#51068;&#50612;&#45208;&#45716;&#51648; &#48372;&#51088;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;&amp;gt;&amp;gt; Client.find(:first).contacts&lt;br /&gt;
# ArgumentError: /&#8230;/active_support/core_ext/hash/keys.rb:48:&lt;br /&gt;
# in `assert_valid_keys&#8217;: Unknown key(s): polymorphic&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#51060;&#44172; &#51089;&#46041;&#54616;&#44172; &#54616;&#47140;&#47732; &lt;strong&gt;:source_type&lt;/strong&gt;&#51012; &#49324;&#50857;&#54644;&#50556; &#54620;&#45796;. &#51060;&#51228;&amp;nbsp;&lt;strong&gt;Client&lt;/strong&gt; &#53364;&#47000;&#49828;&#47484; &#48320;&#44221;&#54616;&#51088;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;class Client &amp;lt; ActiveRecord::Base&lt;br /&gt;
has_many :people_contacts,&lt;br /&gt;
:through =&amp;gt; :contact_cards,&lt;br /&gt;
:source =&amp;gt; :contacts,&lt;br /&gt;
:source_type =&amp;gt; :person&lt;br /&gt;
&lt;br /&gt;
has_many :business_contacts,&lt;br /&gt;
:through =&amp;gt; :contact_cards,&lt;br /&gt;
:source =&amp;gt; :contacts,&lt;br /&gt;
:source_type =&amp;gt; :business&lt;br /&gt;
end&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#51060;&#51228; &#50864;&#47532;&#45716; &#52968;&#53469;&#51012; &#52628;&#52636;&#54616;&#45716; &#46160; &#44032;&#51648; &#45796;&#47480; &#48169;&#48277;&#51060; &#49373;&#44220;&#45796;. &#50612;&#46523;&#44172; &#44536;&#47092; &#49688; &#51080;&#45716;&#51648; &#50976;&#49900;&#55176; &#48372;&#51088;. &#51060;&#51228; &#50864;&#47532;&#45716; &#50612;&#45712; &#52968;&#53469;&#51032; &lt;strong&gt;:source_type&lt;/strong&gt;&#51012; &amp;nbsp;&#50896;&#54616;&#45716;&#51648; &#47568;&#54624; &#49688;&#44032; &#51080;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;Client.find(:first).people_contacts&lt;br /&gt;
Client.find(:first).business_contacts&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Named_scope&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;has_finder&lt;/em&gt; &#51244;&#51060; &lt;strong&gt;named_scope&lt;/strong&gt;&#46972;&#45716; &#45796;&#47480; &#51060;&#47492;&#51004;&#47196; &#47112;&#51068;&#49828;&#50640; &#52628;&#44032;&#46104;&#50632;&#45796;.&lt;/p&gt;
&lt;p&gt;&#51060; &#52628;&#44032;&#44032; &#47112;&#51068;&#49828;&#50640; &#50612;&#46500; &#44163;&#51012; &#44032;&#51256;&#50724;&#45716;&#51648; &#50756;&#51204;&#55176; &#51060;&#54644;&#54616;&#44592; &#50948;&#54644; &#45796;&#51020; &#50696;&#51228;&#47484; &#49332;&#54196; &#48372;&#51088;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;class Article &amp;lt; ActiveRecord::Base&lt;br /&gt;
named_scope :published, :conditions =&amp;gt; {:published =&amp;gt; true}&lt;br /&gt;
named_scope :containing_the_letter_a, :conditions =&amp;gt; "body LIKE '%a%&#8217;"&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
Article.published.paginate(:page =&amp;gt; 1)&lt;br /&gt;
Article.published.containing_the_letter_a.count&lt;br /&gt;
Article.containing_the_letter_a.find(:first)&lt;br /&gt;
Article.containing_the_letter_a.find(:all, :conditions =&amp;gt; {&#8230;})&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#47784;&#46304; &#44172;&#49884;&#46108;(published) &#54252;&#49828;&#53944;&#47484; &#48152;&#54872;&#54616;&#44592; &#50948;&#54644; &lt;strong&gt;published&lt;/strong&gt;&#46972;&#45716; &#49352;&#47196;&#50868; &#47700;&#49436;&#46300;&#47484; &#49373;&#49457;&#54616;&#45716; &#45824;&#49888;, &#50668;&#44592;&#49436;&#45716; &#51060;&#47484; &#50948;&#54644;&amp;nbsp;&lt;strong&gt;named_scope&lt;/strong&gt; &#51012; &#49324;&#50857;&#54616;&#44256; &#51080;&#45796;. &#44536;&#47111;&#51648;&#47564; &#51060;&#44172; &#45796;&#44032; &#50500;&#45768;&#45796;. &#50612;&#46523;&#44172; &#49324;&#50857;&#46112; &#49688; &#51080;&#45716;&#51648;&#47484; &#48372;&#51060;&#45716; &#45796;&#47480; &#50696;&#51228;&#47484; &#54616;&#45208; &#48372;&#51088;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;named_scope :written_before, lambda { |time|&lt;br /&gt;
&amp;nbsp; &amp;nbsp;{ :conditions =&amp;gt; ['written_on &amp;lt; ?', time] }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
named_scope :anonymous_extension do&lt;br /&gt;
&amp;nbsp; def one&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 1&lt;br /&gt;
&amp;nbsp; end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
named_scope :named_extension, :extend =&amp;gt; NamedExtension&lt;br /&gt;
&lt;br /&gt;
named_scope :multiple_extensions,&lt;br /&gt;
&amp;nbsp; &amp;nbsp;:extend =&amp;gt; [MultipleExtensionTwo, MultipleExtensionOne]&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;proxy_options&#47196; named_scope &#53580;&#49828;&#54021;&#54616;&#44592;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Named scopes&lt;/strong&gt;&#51008; &#47112;&#51068;&#49828; 2.1&#50640;&#49436; &#47588;&#50864; &#55141;&#48120;&#47196;&#50868; &#49352; &#44592;&#45733;&#51060;&#51648;&#47564;, &#50612;&#45712; &#51221;&#46020; &#49324;&#50857;&#54616;&#44256; &#45212; &#46244; &#48372;&#45796; &#48373;&#51105;&#54620; &#49345;&#54889;&#50640;&#49436;&#51032; &#53580;&#49828;&#53944;&#47484; &#51089;&#49457;&#54616;&#45716;&#45936; &#51080;&#50612; &#44260;&#46976;&#51012; &#44202;&#51012; &#49688;&#46020; &#51080;&#45796;.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&#50696;&#51228;&#47484; &#54616;&#45208; &#48372;&#51088;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;class Shirt &amp;lt; ActiveRecord::Base&lt;br /&gt;
&amp;nbsp; named_scope :colored, lambda { |color|&lt;br /&gt;
&amp;nbsp; &amp;nbsp; { :conditions =&amp;gt; { :color =&amp;gt; color } }&lt;br /&gt;
&amp;nbsp; }&lt;br /&gt;
end&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#48276;&#50948; &#49373;&#49457;(scope generation)&#51012; &#44160;&#51613;&#54616;&#45716; &#53580;&#49828;&#53944;&#45716; &#50612;&#46523;&#44172; &#51089;&#49457;&#54624;&#44620;?&lt;/p&gt;
&lt;p&gt;&#51060; &#47928;&#51228;&#47484; &#54644;&#44208;&#54616;&#44256;&#51088;, &lt;strong&gt;proxy_options&lt;/strong&gt; &#47700;&#49436;&#46300;&#44032; &#45208;&#50772;&#45796;. &#51060; &#47700;&#49436;&#46300;&#45716; &lt;strong&gt;named_scope&lt;/strong&gt;&#50640; &#49324;&#50857;&#46108; &#50741;&#49496;&#46308;&#51012; &#51312;&#49324;&#54624; &#49688; &#51080;&#44172; &#54644;&#51456;&#45796;. &#47564;&#50557; &#50948;&#51032; &#53076;&#46300;&#47484; &#53580;&#49828;&#53944;&#54620;&#45796;&#47732;, &#45796;&#51020;&#44284; &#44057;&#51060; &#51089;&#49457;&#54624; &#49688; &#51080;&#51012; &#44163;&#51060;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;class ShirtTest &amp;lt; Test::Unit&lt;br /&gt;
&amp;nbsp; &amp;nbsp;def test_colored_scope&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;red_scope = { :conditions =&amp;gt; { :colored =&amp;gt; 'red' } }&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;blue_scope = { :conditions =&amp;gt; { :colored =&amp;gt; 'blue' } }&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;assert_equal red_scope, Shirt.colored('red').scope_options&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; assert_equal blue_scope, Shirt.colored('blue').scope_options&lt;br /&gt;
&amp;nbsp; &amp;nbsp;end&lt;br /&gt;
end&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Increment&#50752; decrement&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&#50529;&#54000;&#48652;&#47112;&#53076;&#46300;&lt;/strong&gt;&#51032; &#47700;&#49436;&#46300; &lt;strong&gt;increment&lt;/strong&gt;&#50752; &lt;strong&gt;increment!&lt;/strong&gt;, &#44536;&#47532;&#44256; &lt;strong&gt;decrement&lt;/strong&gt;&#50752; &lt;strong&gt;decrement!&lt;/strong&gt;&#45716; &#51060;&#51228;&amp;nbsp;&#49352;&#47196;&#50868; &#50741;&#49496; &#47588;&#44060;&#48320;&#49688;&#47484; &#48155;&#51012; &#49688; &#51080;&#44172; &#46104;&#50632;&#45796;. &#51060;&#51204; &#48260;&#51204;&#51032; &#47112;&#51068;&#49828;&#50640;&#49436;&#46972;&#47732; &#50668;&#47084;&#48516;&#51008; &#51452;&#50612;&#51652; &#52972;&#47100;&#50640;&#49436; 1(&#54616;&#45208;)&#51012; &#45908;&#54616;&#44144;&#45208; &#48764;&#45716; &#45936;&#50640; &#51060;&#46308; &#47700;&#49436;&#46300;&#47484; &amp;nbsp;&#49324;&#50857;&#54624; &#49688; &#51080;&#50632;&#51012; &#44163;&#51060;&#45796;. &#47112;&#51068;&#49828; 2.1&#50640;&#49436;&#45716; &#45908;&#54616;&#44144;&#45208; &#48764;&#45716; &#44050;&#51012; &#51648;&#51221;&#54624; &#49688; &#51080;&#45796;. &#45796;&#51020;&#44284; &#44057;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;player1.increment!(:points, 5)&lt;br /&gt;
player2.decrement!(:points, 2)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#50948; &#50696;&#51228;&#50640;&#49436; &#45208;&#45716; player1&#50640;&#45716; 5&#51216;&#51012; &#45908;&#54616;&#44256;, player2&#50640;&#49436;&#45716; 2&#51216;&#51012; &#48764;&#44256; &#51080;&#45796;. &#51060; &#51064;&#49688;&#45716; &#49440;&#53469;&#51201;&#51060;&#44592; &#46412;&#47928;&#50640;, &#44592;&#51316;(legacy) &#53076;&#46300;&#45716; &#50689;&#54693;&#51012; &#48155;&#51648; &#50506;&#45716;&#45796;.&lt;/p&gt;
&lt;h2&gt;Find&lt;/h2&gt;
&lt;h3&gt;Conditions&lt;/h3&gt;
&lt;p&gt;&#51060;&#51228;&#48512;&#53552;&#45716;, &lt;strong&gt;&#50529;&#54000;&#48652;&#47112;&#53076;&#46300;&lt;/strong&gt;&#51032; &lt;strong&gt;find&lt;/strong&gt; &#47700;&#49436;&#46300;&#50640; &#47588;&#44060;&#48320;&#49688;&#47196; &#44061;&#52404;&#47484; &#45336;&#44600; &#49688; &#51080;&#45796;. &#45796;&#51020; &#50696;&#51228;&#47484; &#48372;&#51088;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;class Account &amp;lt; ActiveRecord::Base&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;composed_of :balance, :class_name =&amp;gt; "Money", :mapping =&amp;gt; %w(balance amount)&lt;br /&gt;
end&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#51060; &#44221;&#50864;, &#50864;&#47532;&#45716; &#45796;&#51020;&#44284; &#44057;&#51060; &lt;strong&gt;Account&lt;/strong&gt; &#53364;&#47000;&#49828;&#51032; &lt;strong&gt;find&lt;/strong&gt; &#47700;&#49436;&#46300; &#47588;&#44060;&#48320;&#49688;&#47196; &lt;strong&gt;Money&lt;/strong&gt;&#51032; &#51064;&#49828;&#53556;&#49828;&#47484; &#51204;&#45804;&#54624; &#49688; &#51080;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;amount = 500&lt;br /&gt;
currency = "USD"&lt;br /&gt;
Account.find(:all, :conditions =&amp;gt; { :balance =&amp;gt; Money.new(amount, currency) })&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Last&lt;/h3&gt;
&lt;p&gt;&#51648;&#44552;&#44620;&#51648; &#50864;&#47532;&#45716; &lt;strong&gt;&#50529;&#54000;&#48652;&#47112;&#53076;&#46300;&lt;/strong&gt;&#51032; &lt;strong&gt;find&lt;/strong&gt; &#47700;&#49436;&#46300;&#47484; &#49324;&#50857;&#54616;&#50668; &#45936;&#51060;&#53552;&#47484; &#52286;&#45716;&#45936; &#49464; &#44060;&#51032; &#50672;&#49328;&#51088;&#47564;&#51012; &#49324;&#50857;&#54624; &#49688; &#51080;&#50632;&#45796;. &#51593;, &lt;strong&gt;:first&lt;/strong&gt;&#50752; &lt;strong&gt;:all&lt;/strong&gt; &#44536;&#47532;&#44256; &#44061;&#52404;&#51032; &#51088;&#52404; id&#44032; &#44536;&#44163;&#51060;&#50632;&#45796;(&#51060; &#44221;&#50864;&#45716; id &#51088;&#52404;&#47484; &#51228;&#50808;&#54620; &#50612;&#46496;&#54620; &#51064;&#49688;&#46020; &#51204;&#45804;&#54616;&#51648; &#50506;&#45716;&#45796;).&lt;/p&gt;
&lt;p&gt;&#47112;&#51068;&#49828; 2.1&#50640;&#49436;&#45716; &#45348;&#48264;&#51704; &#50672;&#49328;&#51088;&#44032; &#49373;&#44220;&#51004;&#45768;, &#51060;&#47492;&#54616;&#50668; &lt;strong&gt;:last&lt;/strong&gt;&#45796;. &#45796;&#51020;&#51008; &#47751; &#44032;&#51648; &#50696;&#51228;&#51060;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;Person.find(:last)&lt;br /&gt;
Person.find(:last, :conditions =&amp;gt; [ "user_name = ?", user_name])&lt;br /&gt;
Person.find(:last, :order =&amp;gt; "created_on DESC", :offset =&amp;gt; 5)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#51060; &#49352;&#47196;&#50868; &#50672;&#49328;&#51088;&#44032; &#50612;&#46523;&#44172; &#51089;&#46041;&#54616;&#45716;&#44148;&#51648; &#50756;&#51204;&#54616;&#44172; &#51060;&#54644;&#54616;&#47140;&#47732;, &#45796;&#51020; &#53580;&#49828;&#53944;&#47564; &#48372;&#47732; &#46108;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;def test_find_last&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;last = Developer.find :last&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;assert_equal last, Developer.find(:first, :order =&amp;gt; 'id desc')&lt;br /&gt;
end&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;All&lt;/h3&gt;
&lt;p&gt;&#51221;&#51201; &#47700;&#49436;&#46300;&#51064;&amp;nbsp;&lt;strong&gt;all&lt;/strong&gt;&#51008; &#47560;&#52268;&#44032;&#51648;&#47196; &#51221;&#51201; &#47700;&#49436;&#46300;&#51064; &lt;strong&gt;find(:all)&lt;/strong&gt;&#51032; &#48324;&#52845;&#51060;&#45796;. &#50696;&#51228;&#45716; &#45796;&#51020;&#44284; &#44057;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;Topic.all is the same as Topic.find(:all)&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;First&lt;/h3&gt;
&lt;p&gt;&#51221;&#51201; &#47700;&#49436;&#46300;&#51064; &lt;strong&gt;first&lt;/strong&gt;&#51008; &#47560;&#52268;&#44032;&#51648;&#47196; &#51221;&#51201; &#47700;&#49436;&#46300;&#51064; &lt;strong&gt;find(:first)&lt;/strong&gt;&#51032; &#48324;&#52845;&#51060;&#45796;. &#50696;&#51228;&#45716; &#45796;&#51020;&#44284; &#44057;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;Topic.first is the same as Topic.find(:first)&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Last&lt;/h3&gt;
&lt;p&gt;&#51221;&#51201; &#47700;&#49436;&#46300;&#51064;&amp;nbsp;&lt;strong&gt;last&lt;/strong&gt;&#51008; &#47560;&#52268;&#44032;&#51648;&#47196; &#51221;&#51201; &#47700;&#49436;&#46300;&#51064; &lt;strong&gt;find(:last)&lt;/strong&gt;&#51032; &#48324;&#52845;&#51060;&#45796;. &#50696;&#51228;&#45716; &#45796;&#51020;&#44284; &#44057;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;Topic.last is the same as Topic.find(:last)&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;named_scope&#50640;&#49436; &lt;strong&gt;first&#50752;&amp;nbsp;&lt;/strong&gt;&lt;strong&gt;last &#47700;&#49436;&#46300; &#49324;&#50857;&#54616;&#44592;&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&#50526;&#49436; &#50616;&#44553;&#54620; &#47784;&#46304; &#47700;&#49436;&#46300;&#46308;&#51008; &lt;strong&gt;named_scope&lt;/strong&gt;&#50640;&#49436;&#46020; &#46041;&#51089;&#54620;&#45796;. &lt;strong&gt;recent&lt;/strong&gt;&#46972;&#45716; &lt;strong&gt;named_scope&lt;/strong&gt;&#51012; &#47564;&#46304;&#45796;&#44256; &#54616;&#51088;. &#45796;&#51020;&#51008; &#47928;&#48277;&#51201;&#51004;&#47196; &#50732;&#48148;&#47480; &#44163;&#51060;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;post.comments.recent.last&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Eager Loading&lt;/h2&gt;
&lt;p&gt;&#51060; &#49352;&#47196;&#50868; &#44592;&#45733;&#51012; &#49444;&#47749;&#54616;&#44592; &#50948;&#54644;, &#45796;&#51020; &#53076;&#46300;&#47484; &#48372;&#51088;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;Author.find(:all, :include =&amp;gt; [:posts, :comments])&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#50668;&#44592;&#49436; &#45208;&#45716; &lt;strong&gt;authors&lt;/strong&gt; &#53580;&#51060;&#48660;&#51012; &#44160;&#49353; &#51473;&#51060;&#47728;, &#46608;&#54620; &lt;strong&gt;posts&lt;/strong&gt;&#50752; &lt;strong&gt;comments&lt;/strong&gt; &#53580;&#51060;&#48660;&#46020; &#53244;&#47532; &#49549;&#50640; &#54252;&#54632;&#54616;&#50668; &#44160;&#49353; &#51473;&#51060;&#45796;. &#51060; &#46412; &#53244;&#47532;&#45716; &lt;strong&gt;author id&lt;/strong&gt; &#52972;&#47100;&#51012; &#53685;&#54644; &#51060;&#47336;&#50612;&#51648;&#45716;&#45936;, &#50780;&#45264;&#47732; &#51060;&#44172; &#47112;&#51068;&#49828;&#50640;&#49436; &#50808;&#47000; &#53412; &#51060;&#47492; &#44288;&#47168;&#49345; &#46356;&#54260;&#53944; &#52972;&#47100;&#47749;&#51060;&#44592; &#46412;&#47928;&#51060;&#45796;. &#51060; &#44160;&#49353;&#51008; &#45796;&#51020;&#44284; &#44057;&#51008; SQL &#53244;&#47532;&#47484; &#49373;&#49457;&#54616;&#44172; &#46108;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;SELECT&lt;br /&gt;
authors."id" AS t0_r0,&lt;br /&gt;
authors."created_at" AS t0_r1,&lt;br /&gt;
authors."updated_at" AS t0_r2,&lt;br /&gt;
posts."id" AS t1_r0,&lt;br /&gt;
posts."author_id" AS t1_r1,&lt;br /&gt;
posts."created_at" AS t1_r2,&lt;br /&gt;
posts."updated_at" AS t1_r3,&lt;br /&gt;
comments."id" AS t2_r0,&lt;br /&gt;
comments."author_id" AS t2_r1,&lt;br /&gt;
comments."created_at" AS t2_r2,&lt;br /&gt;
comments."updated_at" AS t2_r3&lt;br /&gt;
FROM&lt;br /&gt;
authors&lt;br /&gt;
LEFT OUTER JOIN posts ON posts.author_id = authors.id&lt;br /&gt;
LEFT OUTER JOIN comments ON comments.author_id = authors.id&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;authors&lt;/strong&gt;&#50752; &lt;strong&gt;posts&lt;/strong&gt;, &#44536;&#47532;&#44256; &lt;strong&gt;comments&lt;/strong&gt; &#53580;&#51060;&#48660; &#44036;&#51032; &#51312;&#51064;(&lt;strong&gt;joins)&lt;/strong&gt;&#51012; &#44032;&#51648;&#45716; &#51221;&#54869;&#55176; &#54616;&#45208;&#51032; &#44596; SQL &#53244;&#47532;&#51060;&#45796;. &#50864;&#47532;&#45716; &#51060;&#44163;&#51012; &#52852;&#53580;&#49884;&#50504; &#44273;(&lt;strong&gt;cartesian product&lt;/strong&gt;)&#51060;&#46972; &#48512;&#47480;&#45796;.&lt;/p&gt;
&lt;p&gt;&#51060;&#47088; &#50976;&#54805;&#51032; &#53244;&#47532;&#44032; &#50616;&#51228;&#45208; &#49457;&#45733;&#47732;&#50640;&#49436; &#51339;&#51008; &#44163;&#51008; &#50500;&#45768;&#44592;&#50640;, &#47112;&#51068;&#49828; 2.1&#50640;&#49436;&#45716; &#48320;&#44221;&#46104;&#50632;&#45796;. &lt;strong&gt;Author&lt;/strong&gt;&#50640; &#45824;&#54620; &#46041;&#51068;&#54620; &#53244;&#47532;&#44032; &#51060;&#51228;&#45716; &#49464; &#44060;&#51032; &#53580;&#51060;&#48660;&#50640;&#49436; &#51221;&#48372;&#47484; &#52628;&#52636;&#54616;&#45716;&#45936; &#51080;&#50612; &#45796;&#47480; &#51217;&#44540;&#48277;&#51012; &#49324;&#50857;&#54620;&#45796;. &#47112;&#51068;&#49828;&#45716; &#51060;&#51228; &#49464; &#44060;&#51032; &#45796;&#47480; &#53244;&#47532; - &#44033; &#53580;&#51060;&#48660; &#45817; &#54616;&#45208;&#50473; -&#47484; &#49324;&#50857;&#54616;&#47728;, &#51060;&#44163;&#51008; &#51060;&#51204;&#50640; &#49373;&#49457;&#46108; &#53244;&#47532;&#48372;&#45796; &#51687;&#51008; &#53244;&#47532;&#46308;&#51060;&#45796;. &#44536; &#44208;&#44284;&#45716; &#50526;&#49436; &#48372;&#51064; &#47112;&#51068;&#49828; &#53076;&#46300;&#47484; &#49892;&#54665;&#49884;&#53416; &#46244;&#50640;&amp;nbsp; &#47196;&#44536; &#54028;&#51068;&#51012; &#53685;&#54644; &#54869;&#51064;&#54644; &#48380; &#49688; &#51080;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;SELECT * FROM "authors"&lt;br /&gt;
SELECT posts.* FROM "posts" WHERE (posts.author_id IN (1))&lt;br /&gt;
SELECT comments.* FROM "comments" WHERE (comments.author_id IN (1))&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;&#45824;&#48512;&#48516;&#51032; &#44221;&#50864;&lt;/strong&gt; &#49464; &#44060;&#51032; &#48372;&#45796; &#44036;&#45800;&#54620; &#53244;&#47532;&#44032; &#54616;&#45208;&#51032; &#48373;&#51105;&#54616;&#44256; &#44596; &#53244;&#47532;&#48372;&#45796; &#48736;&#47476;&#44172; &#49892;&#54665;&#46108;&#45796;.&lt;/p&gt;
&lt;h2&gt;Belongs_to&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;belongs_to&lt;/strong&gt; &#47700;&#49436;&#46300;&#45716; &#50672;&#44288;&#50640;&#49436; &lt;strong&gt;:dependent =&amp;gt; :destroy&lt;/strong&gt;&#50752; &lt;strong&gt;:delete&lt;/strong&gt;&#47484; &#49324;&#50857;&#54624; &#49688; &#51080;&#44172;&amp;nbsp;&#48320;&#44221;&#46104;&#50632;&#45796;. &#45796;&#51020;&#51008; &#50696;&#51228;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;belongs_to :author_address&lt;br /&gt;
belongs_to :author_address, :dependent =&amp;gt; :destroy&lt;br /&gt;
belongs_to :author_address_extra, :dependent =&amp;gt; :delete,&lt;br /&gt;
:class_name =&amp;gt; "AuthorAddress"&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;&#45796;&#54805;&#51201; URL(Polymorphic url)&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&#50529;&#54000;&#48652;&#47112;&#53076;&#46300;&lt;/strong&gt;&#47484; &#44032;&#51648;&#44256;&amp;nbsp;&#51089;&#50629;&#51012; &#54616;&#45716; &#46041;&#50504;&#50640; &#51060;&#47492;&#51060; &#48320;&#44221;&#46104;&#45716; &#46972;&#50864;&#53552;&#50640; &#45824;&#54620; &#51312;&#44552; &#45908; &#44540;&#49324;&#54620; &#49556;&#47336;&#49496;&#51004;&#47196; &#45796;&#54805;&#51201; URL&#50640; &#45824;&#54620; &#54764;&#54140; &#47700;&#49436;&#46300;&#47484; &#49324;&#50857;&#54624; &#49688; &#51080;&#45796;.&lt;/p&gt;
&lt;p&gt;&#51060;&#46308; &#47700;&#49436;&#46300;&#45716; &#50672;&#44288;&#51648;&#51012; &#53440;&#51077;&#51012; &#51648;&#51221;&#54616;&#51648; &#50506;&#51008; &#49345;&#53468;&#47196; &lt;strong&gt;RESTful&lt;/strong&gt; &#47532;&#49548;&#49828;&#51032; URL&#51012; &#49373;&#49457;&#54616;&#44256;&#51088; &#54624; &#46412; &#50976;&#50857;&#54616;&#45796;.&lt;/p&gt;
&lt;p&gt;&#49324;&#50857;&#48277;&#51008; &#44036;&#45800;&#54616;&#45796;. &#47751; &#44032;&#51648; &#50696;&#51228;&#47484; &#48372;&#51088;.(&#51452;&#49437;&#51004;&#47196; &#52376;&#47532;&#54620; &#48512;&#48516;&#51008; &#46041;&#51068;&#54620; &#44163;&#51012; &#47112;&#51068;&#49828; 2.1 &#51060;&#51204; &#48260;&#51204;&#50640;&#49436; &#54664;&#45912; &#48169;&#49885;&#51060;&#45796;).&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;record = Article.find(:first)&lt;br /&gt;
polymorphic_url(record) #-&amp;gt; article_url(record)&lt;br /&gt;
&lt;br /&gt;
record = Comment.find(:first)&lt;br /&gt;
polymorphic_url(record) #-&amp;gt; comment_url(record)&lt;br /&gt;
&lt;br /&gt;
# &#48169;&#44552; &#49373;&#49457;&#54620; &#50836;&#49548;&#46308;&#46020; &#49885;&#48324;&#54624; &#49688; &#51080;&#45796;&lt;br /&gt;
record = Comment.new&lt;br /&gt;
polymorphic_url(record) #-&amp;gt; comments_url()&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;polymorphic_url&lt;/strong&gt;&#51060; &#50612;&#46523;&#44172; &#51452;&#50612;&#51652; &#53440;&#51077;&#51012; &#49885;&#48324;&#54616;&#44256;&#49436; &#51221;&#54869;&#54620; &#46972;&#50864;&#53552;&#47484; &#47564;&#46308;&#50612; &#45236;&#45716;&#51648;&#47484; &#50976;&#49900;&#55176; &#48372;&#51088;. &lt;strong&gt;&#51473;&#52393; &#47532;&#49548;&#49828;(nested resources)&lt;/strong&gt;&#50752; &lt;strong&gt;&#45348;&#51076;&#49828;&#54168;&#51060;&#49828;(&lt;/strong&gt;&lt;strong&gt;namespaces)&lt;/strong&gt;&#46020; &#51648;&#50896;&#46108;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;polymorphic_url([:admin, @article, @comment])&lt;br /&gt;
#-&amp;gt; this will return:&lt;br /&gt;
admin_article_comment_url(@article, @comment)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#46608;&#54620; &lt;strong&gt;new&lt;/strong&gt;&#45208; &lt;strong&gt;edit&lt;/strong&gt;, &lt;strong&gt;formatted&lt;/strong&gt; &#44057;&#51008; &#51217;&#46160;&#50612;&#46020; &#49324;&#50857;&#54624; &#49688; &#51080;&#45796;. &#47751; &#44032;&#51648; &#50696;&#51228;&#47484; &#48372;&#51088;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;edit_polymorphic_path(@post)&lt;br /&gt;
#=&amp;gt; /posts/1/edit&lt;br /&gt;
&lt;br /&gt;
formatted_polymorphic_path([@post, :pdf])&lt;br /&gt;
#=&amp;gt; /posts/1.pdf&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;&#51069;&#44592;&#51204;&#50857; &#50672;&#44288;(Readonly relationships)&lt;/h2&gt;
&lt;p&gt;&#47784;&#45944; &#44036; &#50672;&#44288;&#44288;&#44228;&#50640;&#46020; &#49352;&#47196;&#50868; &#44592;&#45733;&#51060; &#52628;&#44032;&#46104;&#50632;&#45796;. &#47784;&#45944;&#51032; &#49345;&#53468;&#44032; &#48320;&#44221;&#46104;&#45716; &#44163;&#51012; &#47561;&#51004;&#47140;&#47732; &#51060;&#51228; &#50672;&#44288;&#51012; &#44592;&#49696;&#54624; &#46412; &lt;strong&gt;:readonly&lt;/strong&gt;&#47484; &#49324;&#50857;&#54624; &#49688; &#51080;&#45796;. &#47751; &#44032;&#51648; &#50696;&#51228;&#47484; &#48372;&#51088;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;has_many :reports, :readonly =&amp;gt; true&lt;br /&gt;
&lt;br /&gt;
has_one :boss, :readonly =&amp;gt; :true&lt;br /&gt;
&lt;br /&gt;
belongs_to :project, :readonly =&amp;gt; true&lt;br /&gt;
&lt;br /&gt;
has_and_belongs_to_many :categories, :readonly =&amp;gt; true&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#51060;&#47111;&#44172; &#54616;&#47732; &#50668;&#47084;&#48516;&#51032; &#50672;&#44288; &#47784;&#45944;&#51008; &#51060; &#47784;&#45944; &#49549;&#50640;&#49436; &#49688;&#51221;&#51004;&#47196;&#48512;&#53552; &#51088;&#50976;&#47196;&#50872; &#44163;&#51060;&#45796;. &#47564;&#50557; &#51060;&#46308; &#51473; &#47924;&#50616;&#44032;&#47484; &#49688;&#51221;&#54616;&#47140;&#44256; &#54616;&#47732;, &#50668;&#47084;&#48516;&#51008; &lt;strong&gt;ActiveRecord::ReadOnlyRecord&lt;/strong&gt; &#50696;&#50808;&#47484; &#48155;&#51012; &#44163;&#51060;&#45796;.&lt;/p&gt;
&lt;h2&gt;add_timestamps&#50752;&amp;nbsp;remove_timestamps &#47700;&#49436;&#46300;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;add_timestamps&lt;/strong&gt;&#50752; &lt;strong&gt;remove_timestamps&lt;/strong&gt;&#46972;&#45716; &#46160; &#44060;&#51032; &#49352; &#47700;&#49436;&#46300;&#44032; &#49373;&#44220;&#45796;. &#51060; &#47700;&#49436;&#46300;&#46308;&#51008; &#44033;&#44033; &lt;strong&gt;timestamp&lt;/strong&gt; &#52972;&#47100;&#51012; &#52628;&#44032;&#54616;&#44256; &#49325;&#51228;&#54620;&#45796;. &#50696;&#51228;&#47484; &#54616;&#45208; &#48372;&#51088;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;def self.up&lt;br /&gt;
add_timestamps :feeds&lt;br /&gt;
add_timestamps :urls&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
def self.down&lt;br /&gt;
remove_timestamps :urls&lt;br /&gt;
remove_timestamps :feeds&lt;br /&gt;
end&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Calculations&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;ActiveRecord::Calculations&lt;/strong&gt;&#51060; &#53580;&#51060;&#48660;&#47749;&#51012; &#51648;&#50896;&#54616;&#44592; &#50948;&#54644; &#51312;&#44552; &#48320;&#44221;&#46104;&#50632;&#45796;. &#51060;&#44163;&#51008; &#46041;&#51068;&#54620; &#52972;&#47100;&#47749;&#51012; &#44032;&#51648;&#45716; &#49436;&#47196; &#45796;&#47480; &#53580;&#51060;&#48660; &#44036;&#50640; &#50672;&#44288;&#51060; &#51080;&#45716; &#44221;&#50864; &#54200;&#47532;&#54616;&#45796;. &#51060;&#51228; &#45796;&#51020; &#46160; &#44032;&#51648; &#50741;&#49496;&#51060; &#51080;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;authors.categories.maximum(:id)&lt;br /&gt;
authors.categories.maximum("categories.id")&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;ActiveRecord::Base.create accepts blocks&lt;/h2&gt;
&lt;p&gt;&#51060;&#48120; &#50864;&#47532;&#45716; &lt;strong&gt;ActiveRecord::Base.new&lt;/strong&gt; &#50640;&#49436; &#48660;&#47197;&#51012; &#48155;&#51012; &#49688; &#51080;&#45796;. &#51060;&#51228; &#46041;&#51068;&#54620; &#44163;&#51012; &lt;strong&gt;create&lt;/strong&gt; &#47700;&#49436;&#46300;&#50640;&#49436;&#46020; &#54624; &#49688; &#51080;&#44172; &#46104;&#50632;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;# &#44061;&#52404;&#47484; &#49373;&#49457;&#54616;&#50668; &#48660;&#47197;&#51004;&#47196; &#45336;&#44200;&#49436; &#44536; &#49549;&#49457;&#51012; &#44592;&#49696;&#54632;.&lt;br /&gt;
User.create(:first_name =&amp;gt; 'Jamie') do |u|&lt;br /&gt;
u.is_admin = false&lt;br /&gt;
end&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#48148;&#47196; &#44536; &#47700;&#49436;&#46300;&#45716; &#46041;&#49884;&#50640; &#50668;&#47084; &#44061;&#52404;&#47484; &#49373;&#49457;&#54616;&#45716;&#45936;&#46020; &#49324;&#50857;&#54624; &#49688; &#51080;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;# &#49352;&#47196;&#50868; &#44061;&#52404;&#51032; &#48176;&#50676;&#51012; &#48660;&#47197;&#51012; &#49324;&#50857;&#54616;&#50668; &#49373;&#49457;&#54632;.&lt;br /&gt;
# &#48660;&#47197;&#51008; &#49373;&#49457;&#46108; &#44033; &#44061;&#52404;&#50640; &#45824;&#54644; &#54620;&#48264;&#50473; &#49892;&#54665;&#46120;.&lt;br /&gt;
User.create([{:first_name =&amp;gt; 'Jamie'}, {:first_name =&amp;gt; 'Jeremy'}]) do |u|&lt;br /&gt;
u.is_admin = false&lt;br /&gt;
end&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#46608;&#54620; &#50672;&#44288;&#50640;&#49436;&#46020; &#51089;&#46041;&#54620;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;author.posts.create!(:title =&amp;gt; "New on Edge") {|p| p.body = "More cool stuff!"}&lt;br /&gt;
&lt;br /&gt;
# &#46608;&#45716;&lt;br /&gt;
&lt;br /&gt;
author.posts.create!(:title =&amp;gt; "New on Edge") do |p|&lt;br /&gt;
p.body = "More cool stuff!"&lt;br /&gt;
end&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;change_table&lt;/h2&gt;
&lt;p&gt;&#47112;&#51068;&#49828; 2.0&#50640;&#49436; &lt;strong&gt;&#47560;&#51060;&#44536;&#47112;&#51060;&#49496;&lt;/strong&gt;&#51012; &#49373;&#49457;&#54616;&#45716; &#44163;&#51008; &#51060;&#51204; &#48260;&#51204;&#50640; &#48708;&#54644; &#47566;&#51060; &#49465;&#49884;&#54644; &#51276;&#51648;&#47564;, &#53580;&#51060;&#48660;&#51012; &#48320;&#44221;&#54616;&#45716; &#48512;&#48516;&#50640;&#49436; &lt;strong&gt;&#47560;&#51060;&#44536;&#47112;&#51060;&#49496;&lt;/strong&gt;&#51012; &#49324;&#50857;&#54616;&#45716; &#44163;&#51008; &#51204;&#54784; &#49465;&#49884;&#54616;&#51648; &#50506;&#50520;&#45796;.&lt;/p&gt;
&lt;p&gt;&#47112;&#51068;&#49828; 2.1&#50640;&#49436;&#45716;, &#49352;&#47196;&#50868; &#47700;&#49436;&#46300;&#51064; &lt;strong&gt;change_table&lt;/strong&gt;&#51012; &#49324;&#50857;&#54632;&#51004;&#47196;&#50024; &#53580;&#51060;&#48660;&#51012; &#48320;&#44221;&#54616;&#45716; &#44163; &#50669;&#49884; &#49465;&#49884;&#54644; &#51276;&#45796;. &#50696;&#51228;&#47484; &#54616;&#45208; &#49332;&#54196;&#48372;&#51088;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;change_table :videos do |t|&lt;br /&gt;
t.timestamps # &#51060;&#44163;&#51008; created_at&#44284;&amp;nbsp;updated_at &#52972;&#47100;&#51012; &#49373;&#49457;&lt;br /&gt;
t.belongs_to :goat # &#51060;&#47084;&#47732; goat_id &#52972;&#47100;&#51012; &#52628;&#44032;(integer)&lt;br /&gt;
t.string :name, :email, :limit =&amp;gt; 20 # &#52972;&#47100; name&#44284; email&#51012; &#52628;&#44032;&lt;br /&gt;
t.remove :name, :email # name&#44284;&amp;nbsp;email &#52972;&#47100;&#51012; &#51228;&#44144;&lt;br /&gt;
end&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#51060; &#49352; &#47700;&#49436;&#46300; &lt;strong&gt;change_table&lt;/strong&gt;&#51008; &#44536; &#49324;&#52492;&#44201;&#51064; &lt;strong&gt;create_table&lt;/strong&gt;&#44284; &#48708;&#49847;&#54616;&#44172; &#51089;&#46041;&#54616;&#51648;&#47564;, &#49352;&#47196; &#53580;&#51060;&#48660;&#51012; &#49373;&#49457;&#54616;&#45716; &#45824;&#49888;, &#51060;&#48120; &#51316;&#51116;&#54616;&#45716; &#53580;&#51060;&#48660;&#50640;&#49436; &#52972;&#47100;&#51060;&#45208; &#51064;&#45937;&#49828;&#47484; &#52628;&#44032; &#46608;&#45716; &#51228;&#44144;&#54616;&#45716; &#48169;&#49885;&#51004;&#47196; &#44592;&#51316; &#53580;&#51060;&#48660;&#51012; &#48320;&#44221;&#54620;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;change_table :table do |t|&lt;br /&gt;
t.column &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;# &#53685;&#49345;&#51201;&#51064; &#52972;&#47100; &#52628;&#44032;. &#50696;: t.column(:name, :string)&lt;br /&gt;
t.index &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;# &#49352; &#51064;&#45937;&#49828; &#52628;&#44032;.&lt;br /&gt;
t.timestamps&lt;br /&gt;
t.change &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;# &#52972;&#47100; &#51221;&#51032;&#47484; &#48320;&#44221;. &#50696;: t.change(:name, :string, :limit =&amp;gt; 80)&lt;br /&gt;
t.change_default &amp;nbsp;&amp;nbsp;&amp;nbsp;# &#52972;&#47100;&#51032; &#46356;&#54260;&#53944; &#44050;&#51012; &#48320;&#44221;.&lt;br /&gt;
t.rename &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;# &#52972;&#47100;&#47749;&#51012; &#48320;&#44221;.&lt;br /&gt;
t.references&lt;br /&gt;
t.belongs_to&lt;br /&gt;
t.string&lt;br /&gt;
t.text&lt;br /&gt;
t.integer&lt;br /&gt;
t.float&lt;br /&gt;
t.decimal&lt;br /&gt;
t.datetime&lt;br /&gt;
t.timestamp&lt;br /&gt;
t.time&lt;br /&gt;
t.date&lt;br /&gt;
t.binary&lt;br /&gt;
t.boolean&lt;br /&gt;
t.remove&lt;br /&gt;
t.remove_references&lt;br /&gt;
t.remove_belongs_to&lt;br /&gt;
t.remove_index&lt;br /&gt;
t.remove_timestamps&lt;br /&gt;
end&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Dirty Objects&lt;/h2&gt;
&lt;p&gt;&#51060;&#51228; &#47112;&#51068;&#49828;&#50640;&#49436; &lt;strong&gt;&#50529;&#54000;&#48652;&#47112;&#53076;&#46300;&lt;/strong&gt;&#50640; &#49373;&#44596; &#48320;&#44221;&#51012; &#52628;&#51201;&#54624; &#49688; &#51080;&#44172; &#46104;&#50632;&#45796;.&amp;nbsp;&#50612;&#46500; &#44061;&#52404;&#44032; &#48320;&#44221;&#46104;&#50632;&#45716;&#51648; &#50668;&#48512;&#47484; &#44160;&#49324;&#54616;&#45716; &#44163;&#51060; &#44032;&#45733;&#54644; &#51652; &#44163;&#51060;&#45796;. &#47564;&#50557; &#48320;&#44221;&#51060; &#46108; &#44221;&#50864;&#46972;&#47732;, &#52572;&#44540;&#51032; &#48320;&#44221;&#51012; &#52628;&#51201;&#54624; &#49688; &#51080;&#45796;. &#47751; &#44032;&#51648; &#50696;&#51228;&#47484; &#48372;&#51088;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;article = Article.find(:first) article.changed? #=&amp;gt; false&lt;/li&gt;
&lt;li&gt;article.title #=&amp;gt; "Title"&lt;br /&gt;
article.title = "New Title"&lt;br /&gt;
article.title_changed? #=&amp;gt; true&lt;br /&gt;
&lt;br /&gt;
# &#48320;&#44221; &#51204; title&#51012; &#48372;&#50668;&#51452;&#50724;&lt;br /&gt;
article.title_was #=&amp;gt; "Title"&lt;br /&gt;
&lt;br /&gt;
# &#48320;&#44221;&#46104;&#44592; &#51204;&#44284; &#48320;&#44221;&#46108; &#54980;&lt;br /&gt;
article.title_change #=&amp;gt; ["Title", "New Title"]&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#48372;&#45796;&#49884;&#54588; &#50500;&#51452; &#44036;&#45800;&#54616;&#45796;. &#46608;&#54620; &#45796;&#51020; &#46168; &#51473; &#54616;&#45208;&#51032; &#48169;&#49885;&#51004;&#47196; &#47784;&#46304; &#48320;&#44221;&#51032; &#47785;&#47197;&#51012; &#48380; &#49688;&#46020; &#51080;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;# &#48320;&#44221;&#46108; &#47784;&#46304; &#49549;&#49457;&#46308;&#51032; &#48176;&#50676;&#51012; &#48152;&#54872;&lt;br /&gt;
article.changed #=&amp;gt; ['title']&lt;br /&gt;
&lt;br /&gt;
# &#48320;&#44221; &#51204;&#54980;&#51032; &#44050;&#44284; &#54632;&#44760; &#48320;&#44221;&#46108; &#49549;&#49457;&#46308;&#51032; &#54644;&#49884;&#47484; &#48152;&#54872;&lt;br /&gt;
article.changes #=&amp;gt; { 'title&#8217; =&amp;gt; ["Title", "New Title"] }&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#50612;&#46500; &#44061;&#52404;&#44032; &#51200;&#51109;&#46104;&#47732;, &#44536; &#49345;&#53468;&#44032; &#48320;&#44221;&#46120;&#50640; &#50976;&#51032;&#54616;&#51088;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;article.changed? #=&amp;gt; true&lt;br /&gt;
article.save #=&amp;gt; true&lt;br /&gt;
article.changed? #=&amp;gt; false&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#47564;&#50557; &lt;strong&gt;attr=&lt;/strong&gt;&#51012; &#49324;&#50857;&#54616;&#51648; &#50506;&#44256; &#44061;&#52404;&#51032; &#49345;&#53468;&#47484; &#48320;&#44221;&#54616;&#47140;&#45716; &#44221;&#50864;&#46972;&#47732;, &#49549;&#49457;&#51060; &#48320;&#44221;&#46104;&#50632;&#45796;&#45716; &#49324;&#49892;&#51012; &#47749;&#49884;&#51201;&#51004;&#47196; &#50508;&#47140;&#50556; &#54616;&#47728;, &#51060; &#46412; &#49324;&#50857;&#54616;&#45716; &#47700;&#49436;&#46300;&#44032;&amp;nbsp;&lt;strong&gt;attr_name_will_change!&lt;/strong&gt;&#51060;&#45796;(&lt;strong&gt;attr&lt;/strong&gt; &#47484; &#44061;&#52404;&#51032; &#49892;&#51228; &#49549;&#49457;&#51004;&#47196; &#45824;&#52404;&#54624; &#44163;). &#47560;&#51648;&#47561; &#54616;&#45208;&#51032; &#50696;&#51228;&#47484; &#48372;&#51088;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;article = Article.find(:first)&lt;br /&gt;
article.title_will_change!&lt;br /&gt;
article.title.upcase!&lt;br /&gt;
article.title_change #=&amp;gt; ['Title', 'TITLE']&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;&#48512;&#48516; &#44081;&#49888;(Partial Updates)&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Dirty Objects&lt;/strong&gt;&#47484; &#44396;&#54788;&#54616;&#45716; &#44163;&#51008; &#45796;&#47480; &#50500;&#51452; &#55141;&#48120;&#47196;&#50868; &#44592;&#45733;&#46308;&#51032; &#49884;&#51089;&#51216;&#51060; &#46108;&#45796;.&lt;/p&gt;
&lt;p&gt;&#51060;&#51228; &#50864;&#47532;&#45716; &#44061;&#52404;&#51032; &#48320;&#44221;&#46108; &#49345;&#53468;&#44032; &#50612;&#46500;&#51648;&#47484; &#52628;&#51201;&#54624; &#49688; &#51080;&#44172; &#46104;&#50632;&#45796;. &#44536;&#47111;&#45796;&#47732; &#45936;&#51060;&#53552;&#48288;&#51060;&#49828;&#50640; &#48520;&#54596;&#50836;&#54620; &#50629;&#45936;&#51060;&#53944;&#47484; &#54588;&#54616;&#51648; &#47803;&#54624; &#51060;&#50976;&#44032; &#50612;&#46356; &#51080;&#51012;&#44620;?&lt;/p&gt;
&lt;p&gt;&#51060;&#51204; &#48260;&#51204;&#51032; &#47112;&#51068;&#49828;&#50640;&#49436;&#45716; &#51060;&#48120; &#51316;&#51116;&#54616;&#45716; &lt;strong&gt;&#50529;&#54000;&#48652;&#47112;&#53076;&#46300;&lt;/strong&gt; &#44061;&#52404;&#50640; &#45824;&#54644; &lt;strong&gt;save&lt;/strong&gt; &#47700;&#49436;&#46300;&#47484; &#54840;&#52636;&#54616;&#47732;, &#44536; &#44061;&#52404;&#51032; &#47784;&#46304; &#54596;&#46300;&#46308;&#51060; &#45936;&#51060;&#53552;&#48288;&#51060;&#49828;&#50640; &#50629;&#45936;&#51060;&#53944;&#46104;&#50632;&#45796;. &#49900;&#51648;&#50612;&#45716; &#50500;&#47924;&#47088; &#48320;&#44221;&#46020; &#54616;&#51648; &#50506;&#51008; &#44221;&#50864;&#46020; &#47560;&#52268;&#44032;&#51648;&#50688;&#45796;.&lt;/p&gt;
&lt;p&gt;&#51060; &#51089;&#50629;&#51008; &lt;strong&gt;Dirty Objects&lt;/strong&gt;&#51012; &#49324;&#50857;&#54616;&#45716; &#44163;&#51004;&#47196; &#49345;&#45817;&#48512;&#48516; &#44060;&#49440;&#46112; &#49688; &#51080;&#50632;&#44256;, &#44536;&#44172; &#48148;&#47196; &#51648;&#44552; &#51068;&#50612;&#45212; &#51068;&#51060;&#45796;. &#47112;&#51068;&#49828; 2.1&#51060; &#49373;&#49457;&#54620; SQL &#53244;&#47532;&#47484; &#54616;&#45208; &#49332;&#54196;&#48372;&#51088;. &#48512;&#48516;&#51201;&#51064; &#48320;&#44221;&#51012; &#44032;&#54620; &#44061;&#52404;&#47484; &#51200;&#51109;&#54616;&#45716; &#44163;&#51060;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;article = Article.find(:first)&lt;br /&gt;
article.title #=&amp;gt; "Title"&lt;br /&gt;
article.subject #=&amp;gt; "Edge Rails"&lt;br /&gt;
&lt;br /&gt;
# title&#51012; &#48320;&#44221;&#54616;&#51088;&lt;br /&gt;
article.title = "New Title"&lt;br /&gt;
&lt;br /&gt;
# &#45796;&#51020;&#44284; &#44057;&#51008; SQL&#51012; &#49373;&#49457;&#54620;&#45796;&lt;br /&gt;
article.save&lt;br /&gt;
#=&amp;gt; "UPDATE articles SET title = 'New Title' WHERE id = 1"&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#50528;&#54540;&#47532;&#52992;&#51060;&#49496;&#50640;&#49436; &#48320;&#44221;&#46108; &#54596;&#46300;&#47564;&#51060; &#45936;&#51060;&#53552;&#48288;&#51060;&#49828;&#50640; &#50629;&#45936;&#51060;&#53944;&#46120;&#50640; &#50976;&#51032;&#54616;&#51088;. &#47564;&#50557; &#50528;&#54540;&#47532;&#52992;&#51060;&#49496;&#50640;&#49436; &#50500;&#47924;&#47088; &#54596;&#46300;&#46020; &#50629;&#45936;&#51060;&#53944;&#46104;&#51648; &#50506;&#50520;&#45796;&#47732;, &lt;strong&gt;&#50529;&#54000;&#48652;&#47112;&#53076;&#46300;&lt;/strong&gt;&#45716; &#50500;&#47924;&#47088; &#50629;&#45936;&#51060;&#53944;&#46020; &#49688;&#54665;&#54616;&#51648; &#50506;&#51012; &#44163;&#51060;&#45796;.&lt;/p&gt;
&lt;p&gt;&#51060; &#49352; &#44592;&#45733;&#51012; &#54876;&#49457;/&#48708;&#54876;&#49457; &#49884;&#53412;&#47140;&#47732;, &#47784;&#45944;&#44284; &#50672;&#44288;&#46108; &lt;strong&gt;partial_updates&lt;/strong&gt; &#49549;&#49457;&#51012; &#48320;&#44221;&#54616;&#47732; &#46108;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;# &#54876;&#49457;&#54868;&#49884;&#53412;&#44592;&lt;br /&gt;
MyClass.partial_updates = true&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#47564;&#50557; &#47784;&#46304; &#47784;&#45944;&#50640; &#45824;&#54644; &#51060; &#44592;&#45733;&#51012; &#54876;&#49457;/&#48708;&#54876;&#49457; &#49884;&#53412;&#44256;&#51088; &#54620;&#45796;&#47732;, &lt;em&gt;config/initializers/new_rails_defaults.rb&lt;/em&gt; &#54028;&#51068;&#51012; &#49688;&#51221;&#54644;&#50556; &#54620;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;# &#47784;&#46304; &#47784;&#45944;&#50640;&#49436; &#44592;&#45733; &#54876;&#49457;&#54868;&#49884;&#53412;&#44592;&lt;br /&gt;
ActiveRecord::Base.partial_updates = true&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#47564;&#50557; &lt;strong&gt;attr=&lt;/strong&gt;&#47700;&#49436;&#46300;&#47484; &#49324;&#50857;&#54616;&#51648; &#50506;&#44256; &#54596;&#46300;&#47484; &#49688;&#51221;&#54624; &#50836;&#47049;&#51060;&#46972;&#47732;, &#51060;&#44163; &#50669;&#49884; &lt;em&gt;config/initializers/new_rails_defaults.rb&lt;/em&gt;&#47484; &#53685;&#54644; &#47112;&#51068;&#49828;&#50640; &#50508;&#47140;&#50556; &#54632;&#51012; &#51082;&#51648; &#47568;&#51088;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;# &#47564;&#50557; &#50668;&#47084;&#48516;&#51060; **attr=**&#47484; &#49324;&#50857;&#54620;&#45796;&#47732;,&lt;br /&gt;
# &#50508;&#47532;&#51648; &#50506;&#50500;&#46020; &#51339;&#50500;&#50836;&lt;br /&gt;
person.name = 'bobby'&lt;br /&gt;
person.name_change # =&amp;gt; ['bob', 'bobby']&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# &#44536;&#47111;&#51648;&#47564; **attr=**&#47484; &#49324;&#50857;&#54624; &#44172; &#50500;&#45768;&#46972;&#47732;&lt;br /&gt;
# &#54596;&#46300;&#44032; &#48320;&#44221;&#46112; &#44144;&#46976; &#49324;&#49892;&#51012; &#44845; &#50508;&#47140; &#51452;&#49464;&#50836;&lt;br /&gt;
person.name_will_change!&lt;br /&gt;
person.name &amp;lt;&amp;lt; 'by'&lt;br /&gt;
person.name_change # =&amp;gt; ['bob', 'bobby']&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#47564;&#50557; &#51060;&#47088; &#49885;&#51004;&#47196; &#48320;&#44221;&#51012; &#50508;&#47532;&#51648; &#50506;&#51004;&#47732;, &#52628;&#51201;&#51060; &#51060;&#47336;&#50612;&#51648;&#51648; &#50506;&#51012; &#44163;&#51060;&#44256;, &#46384;&#46972;&#49436; &#45936;&#51060;&#53552;&#48288;&#51060;&#49828; &#53580;&#51060;&#48660;&#51008; &#51228;&#45824;&#47196; &#50629;&#45936;&#51060;&#53944;&#46104;&#51648; &#50506;&#51012; &#44163;&#51060;&#45796;.&lt;/p&gt;
&lt;h2&gt;MySQL&#50640;&#49436; Smallint, int &#46608;&#45716; bigint?&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&#50529;&#54000;&#48652;&#47112;&#53076;&#46300;&lt;/strong&gt; &lt;strong&gt;MySQL&lt;/strong&gt; &#50612;&#45841;&#53552;&#45716; &#51060;&#51228; &#45936;&#51060;&#53552;&#48288;&#51060;&#49828;&#51032; &#52972;&#47100;&#51012; &#49373;&#49457;&#54616;&#44144;&#45208; &#48320;&#44221;&#54624; &#46412; &#51312;&#44552; &#45908; &#50689;&#47532;&#54644;&#51256;&#49436; integer &#53440;&#51077;&#51012; &#49324;&#50857;&#54624; &#49688; &#51080;&#44172; &#46104;&#50632;&#45796;. &lt;strong&gt;:limit&lt;/strong&gt; &#50741;&#49496;&#51012; &#53685;&#54644; &#51060;&#51228; &#52972;&#47100;&#51060; &lt;strong&gt;smallint&lt;/strong&gt;&#51064;&#51648; &lt;strong&gt;int&lt;/strong&gt;&#51064;&#51648; &#46608;&#45716; &lt;strong&gt;bigint&lt;/strong&gt;&#51064;&#51648;&#47484; &#50508;&#47540; &#44163;&#51060;&#45796;. &#45796;&#51020;&#51008; &#44536;&#44172; &#50612;&#46523;&#44172; &#51089;&#46041;&#54616;&#45716;&#51648;&#47484; &#48372;&#51060;&#45716; &#50696;&#51228;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;case limit&lt;br /&gt;
when 0..3&lt;br /&gt;
"smallint(#{limit})"&lt;br /&gt;
when 4..8&lt;br /&gt;
"int(#{limit})"&lt;br /&gt;
when 9..20&lt;br /&gt;
"bigint(#{limit})"&lt;br /&gt;
else&lt;br /&gt;
'int(11)'&lt;br /&gt;
end&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#51060;&#51228; &#51060;&#44163;&#51008; &lt;strong&gt;migration&lt;/strong&gt; &#54028;&#51068;&#50640; &#51201;&#50857;&#54616;&#50668; &#44033; &#52972;&#47100;&#50640; &#45824;&#54644; &#50612;&#46500; &#52972;&#47100; &#53440;&#51077;&#51060; &#47564;&#46308;&#50612; &#51648;&#45716;&#51648; &#50508;&#50500; &#48372;&#51088;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;create_table :table_name, :force =&amp;gt; true do |t|&lt;br /&gt;
&lt;br /&gt;
# 0 - 3: smallint&lt;br /&gt;
t.integer :column_one, :limit =&amp;gt; 2 # smallint(2)&lt;br /&gt;
&lt;br /&gt;
# 4 - 8: int&lt;br /&gt;
t.integer :column_two, :limit =&amp;gt; 6 # int(6)&lt;br /&gt;
&lt;br /&gt;
# 9 - 20: bigint&lt;br /&gt;
t.integer :column_three, :limit =&amp;gt; 15 # bigint(15)&lt;br /&gt;
&lt;br /&gt;
# if :limit is not informed: int(11)&lt;br /&gt;
t.integer :column_four # int(11)&lt;br /&gt;
end&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;PostgreSQL&lt;/strong&gt; &#50612;&#45841;&#53552;&#50640;&#45716; &#51060; &#44592;&#45733;&#51060; &#51060;&#48120; &#46308;&#50612;&#44032; &#51080;&#51004;&#47728; &#51060;&#51228; &lt;strong&gt;MySQL&lt;/strong&gt;&#50640;&#49436;&#46020; &#46384;&#46972; &#50772;&#45796;.&lt;/p&gt;
&lt;h2&gt;has_one&#44284; belongs_to&#50640;&#49436;&#51032; :select &#50741;&#49496;&lt;/h2&gt;
&lt;p&gt;&#51060;&#48120; &#50508;&#47140;&#51652; &#47700;&#49436;&#46300;&#51064; &lt;strong&gt;has_one&lt;/strong&gt;&#44284; &lt;strong&gt;belongs_to&lt;/strong&gt;&#50640; &#49352;&#47196;&#50868; &#50741;&#49496;&lt;strong&gt;:select&lt;/strong&gt;&#44032; &#46308;&#50612; &#50772;&#45796;.&lt;/p&gt;
&lt;p&gt;&#51060; &#50741;&#49496;&#51032; &#46356;&#54260;&#53944; &#44050;&#51008; "*"&#51060;&#51648;&#47564;("SELECT * FROM table"&#50640;&#49436;&#50752; &#44057;&#51060;), &#50668;&#47084;&#48516;&#51008; &#49324;&#50857;&#54616;&#47140;&#44256; &#54616;&#45716; &#52972;&#47100;&#47564; &#52628;&#52636;&#54616;&#46020;&#47197; &#44536; &#44050;&#51012; &#54200;&#51665;&#54624; &#49688;&#44032; &#51080;&#45796;..&lt;/p&gt;
&lt;p&gt;&#51060; &#46412; &lt;strong&gt;&#51452;(primary)&lt;/strong&gt; &#53412;&#50752; &lt;strong&gt;&#50808;&#47000; &#53412;(foreign keys)&lt;/strong&gt;&#47484; &#54252;&#54632;&#49884;&#53412;&#45716;&#44152; &#51082;&#50612;&#49436;&#45716; &#50504;&#46108;&#45796;. &#44536;&#47084;&#51648; &#50506;&#51004;&#47732; &#50724;&#47448;&#44032; &#45208;&#50732; &#44163;&#51060;&#45796;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;belongs_to&lt;/strong&gt; &#47700;&#49436;&#46300;&#45716; &#45908; &#51060;&#49345; &lt;strong&gt;:order&lt;/strong&gt; &#50741;&#49496;&#51012; &#44032;&#51648;&#51648; &#50506;&#45716;&#45796;. &#44536;&#47111;&#45796;&#44256; &#44145;&#51221;&#54624; &#44148; &#50630;&#45796;. &#44536;&#44152; &#49324;&#50857;&#54616;&#45716; &#44221;&#50864;&#45716; &#50630;&#50632;&#51004;&#45768; &#47568;&#51060;&#45796;.&lt;/p&gt;
&lt;h2&gt;STI&#47484; &#49324;&#50857;&#54624; &#46412; &#53364;&#47000;&#49828;&#51032; &#50756;&#51204;&#54620; &#51060;&#47492; &#51200;&#51109;&#54616;&#44592;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&#45348;&#51076;&#49828;&#54168;&#51060;&#49828;(namespace)&lt;/strong&gt; &#48143; &lt;strong&gt;STI&lt;/strong&gt;&#50752; &#54632;&#44760; &lt;strong&gt;&#47784;&#45944;&lt;/strong&gt;&#51012; &#49324;&#50857;&#54624; &#46412;, &lt;strong&gt;&#50529;&#54000;&#48652;&#47112;&#53076;&#46300;&lt;/strong&gt;&#45716; &#45800;&#51648; &#53364;&#47000;&#49828;&#47749;&#47564;&#51012; &#51200;&#51109;&#54616;&#47728;, &#44536; &lt;strong&gt;&#45348;&#51076;&#49828;&#54168;&#51060;&#49828;&lt;/strong&gt;&#45716; &#51200;&#51109;&#54616;&#51648; &#50506;&#45716;&#45796;(&lt;em&gt;&#47784;&#46280;&#51060; &#54400;&#50612;&#51652;&#45796;demodulized&lt;/em&gt;). &#51060;&#47111;&#44172; &#46104;&#47732; &lt;strong&gt;STI&lt;/strong&gt; &#49345;&#50640; &#51080;&#45716; &#47784;&#46304; &#53364;&#47000;&#49828;&#44032; &#46041;&#51068;&#54620; &lt;strong&gt;&#45348;&#51076;&#49828;&#54168;&#51060;&#49828;&lt;/strong&gt;&#50640; &#51080;&#45716; &#44221;&#50864;&#50640;&#47564; &#51089;&#46041;&#54616;&#44172; &#46108;&#45796;. &#50696;&#51228;&#47484; &#48372;&#51088;.&amp;nbsp;&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;class CollectionItem &amp;lt; ActiveRecord::Base; end&lt;br /&gt;
class ComicCollection::Item &amp;lt; CollectionItem; end&lt;br /&gt;
&lt;br /&gt;
item = ComicCollection::Item.new&lt;br /&gt;
item.type # =&amp;gt; 'Item&#8217;&lt;br /&gt;
&lt;br /&gt;
item2 = CollectionItem.find(item.id)&lt;br /&gt;
# &#50724;&#47448;&#44032; &#45208;&#50728;&#45796;. &#50780;&#45264;&#47732; Item &#53364;&#47000;&#49828;&#47484; &#52286;&#51012; &#49688; &#50630;&#44592; &#46412;&#47928;&#51060;&#45796;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#51060;&#48264; &#48320;&#44221;&#50640;&#49436;&#45716; &lt;strong&gt;&#50529;&#54000;&#48652;&#47112;&#53076;&#46300;&lt;/strong&gt;&#44032; &#53364;&#47000;&#49828;&#51032; &#51204;&#52404; &#51060;&#47492;&#51012; &#51200;&#51109;&#54616;&#46020;&#47197; &#54644;&#51452;&#45716; &#49352;&#47196;&#50868; &#50741;&#49496;&#51060; &#54616;&#45208; &#52628;&#44032;&#46104;&#50632;&#45796;.&lt;/p&gt;
&lt;p&gt;&#51060; &#44592;&#45733;&#51012; &#54876;&#49457;/&#48708;&#54876;&#49457; &#49884;&#53412;&#47140;&#47732;, &#45796;&#51020;&#51012; &lt;strong&gt;environment.rb&lt;/strong&gt;&#50640; &#54252;&#54632;&#49884;&#53412;&#44144;&#45208; &#46608;&#45716; &#54200;&#51665;&#54644;&#50556; &#54620;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;ActiveRecord::Base.store_full_sti_class = true&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Its default value is true.&lt;/p&gt;
&lt;h2&gt;table_exists? &#47700;&#49436;&#46300;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;AbstractAdapter&lt;/strong&gt; &#53364;&#47000;&#49828;&#50640;&amp;nbsp;&lt;strong&gt;table_exists?&lt;/strong&gt;&#46972;&#45716; &#49352; &#47700;&#49436;&#46300;&#44032; &#52628;&#44032;&#46104;&#50632;&#45796;. &#49324;&#50857;&#48277;&#51008; &#44036;&#45800;&#54616;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;&amp;gt;&amp;gt; ActiveRecord::Base.connection.table_exists?("users")&lt;br /&gt;
=&amp;gt; true&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;&#53440;&#51076;&#49828;&#53484;&#54532; &#44592;&#48152; &#47560;&#51060;&#44536;&#47112;&#51060;&#49496;&lt;/h2&gt;
&lt;p&gt;&#51060;&#51228; &#47561; &#47112;&#51068;&#49828;&#47484; &#49884;&#51089;&#54616;&#44144;&#45208; &#46608;&#45716; &#50668;&#47084;&#48516;&#47564;&#51032; &#47924;&#50616;&#44032;&#47484; &#44060;&#48156;&#54616;&#47140; &#54624; &#46412;, &lt;strong&gt;&#47560;&#51060;&#44536;&#47112;&#51060;&#49496;&lt;/strong&gt;&#51008; &#50668;&#47084;&#48516;&#51032; &#47784;&#46304; &#47928;&#51228;&#47484; &#54644;&#44208;&#54644; &#51452;&#45716; &#52572;&#49345;&#51032; &#49556;&#47336;&#49496;&#44057;&#50500; &#48372;&#51064;&#45796;. &#44536;&#47084;&#45208; &#44060;&#48156;&#51088;&#46308;&#44284; &#54016;&#51012; &#51060;&#47336;&#45716; &#54532;&#47196;&#51229;&#53944;&#50640;&#49436;&#45716;, &#47560;&#51060;&#44536;&#47112;&#51060;&#49496;&#50640;&#49436; &#49373;&#44592;&#45716; &#47112;&#51060;&#49828; &#51312;&#44148;(race condition)&#51012; &#45796;&#47336;&#45716; &#44163;&#51060; &#44900;&#45208; &#44264;&#52843;&#44144;&#47532;&#44032; &#46108;&#45796;&#45716; &#44152; &#50508;&#44172; &#46112; &#44163;&#51060;&#45796;(&#50500;&#51649;&#51008; &#50500;&#45776; &#49688;&#46020;&amp;nbsp;&#51080;&#51648;&#47564;). &#51060;&#47088; &#44221;&#50864;&#45716; &#47112;&#51068;&#49828; 2.1&#50640; &#49352;&#47196; &#46020;&#51077;&#46108; &#53440;&#51076;&#49828;&#53484;&#54532; &#44592;&#48152; &#47560;&#51060;&#44536;&#47112;&#51060;&#49496;&#51060; &#44396;&#50896;&#53804;&#49688;&#45796;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&#53440;&#51076;&#49828;&#53484;&#54532; &#44592;&#48152; &#47560;&#51060;&#44536;&#47112;&#51060;&#49496;(&lt;/strong&gt;&lt;strong&gt;timestamped migrations)&lt;/strong&gt;&#51060; &#46020;&#51077;&#46104;&#44592; &#51204;&#50640;&#45716;, &#44033;&#44033;&#51032; &#49352;&#47196; &#49373;&#49457;&#46108; &#47560;&#51060;&#44536;&#47112;&#51060;&#49496;&#50640;&#45716; &#47560;&#51060;&#44536;&#47112;&#51060;&#49496;&#47749; &#50526;&#50640; &#49707;&#51088;&#44032; &#46384;&#46972; &#48537;&#50632;&#45796;. &#47564;&#50557; &#46160; &#44060;&#51032; &#47560;&#51060;&#44536;&#47112;&#51060;&#49496;&#51060; &#49436;&#47196; &#45796;&#47480; &#44060;&#48156;&#51088;&#50640; &#51032;&#54644; &#47564;&#46308;&#50612;&#51256;&#49436; &#44536; &#51593;&#49884; &#52964;&#48139;&#46104;&#51648; &#50506;&#51008; &#44221;&#50864;&#46972;&#47732;, &#46609;&#44057;&#51008; &#47560;&#51060;&#44536;&#47112;&#51060;&#49496; &#48264;&#54840;&#50640; &#49436;&#47196; &#45796;&#47480; &#51221;&#48372;&#47484; &#45812;&#44256; &#51080;&#45716; &#47560;&#51060;&#44536;&#47112;&#51060;&#49496;&#51060; &#47564;&#46308;&#50612; &#51656; &#49688; &#51080;&#50632;&#45796;. &#51060; &#46412; &#50668;&#47084;&#48516;&#51032; schema_info&#45716; &#44396;&#45797;&#45796;&#47532;(out of date)&#44032; &#46104;&#44256; &#49548;&#49828; &#52968;&#53944;&#47204; &#49345;&#50640;&#45716; &#52649;&#46028;&#51060; &#49373;&#44596;&#45796;.&lt;/p&gt;
&lt;p&gt;&#51060; &#47928;&#51228;&#47484; &#54644;&#44208;&#54616;&#44592; &#50948;&#54644; &#47566;&#51008; "&#49884;&#46020;"&#46308;&#51060; &#51080;&#50632;&#45796;. &#50668;&#47084; &#44032;&#51648; &#54540;&#47084;&#44536;&#51064;&#46308;&#51060; &#44033;&#44592; &#45796;&#47480; &#51217;&#44540;&#48277;&#51004;&#47196; &#51060; &#47928;&#51228;&#47484; &#54644;&#44208;&#54616;&#44592; &#50948;&#54644; &#47564;&#46308;&#50612; &#51276;&#45796;. &#49324;&#50857;&#54624; &#49688; &#51080;&#45716; &#54540;&#47084;&#44536;&#51064;&#46308;&#50640;&#46020; &#48520;&#44396;&#54616;&#44256;, &#54620;&#44032;&#51648;&#45716; &#48516;&#47749;&#54644; &#51276;&#45796;. &#51593;, &#50715;&#45216; &#48169;&#49885;&#51008; &#54620;&#47560;&#46356;&#47196; &#51089;&#46041;&#54616;&#51648; &#50506;&#50520;&#45796;&#45716; &#44163;&#51060;&#45796;.&lt;/p&gt;
&lt;p&gt;&#47564;&#50557; &#50668;&#47084;&#48516;&#51060; Git&#51012; &#49324;&#50857;&#54616;&#44256; &#51080;&#45796;&#47732;, &#45908; &#44618;&#51008; &#49688;&#47105;&#50640; &#48736;&#51648;&#44172; &#46112; &#44163;&#51064;&#45936;, &#50780;&#45264;&#47732; &#50668;&#47084;&#48516; &#54016;&#50640;&#45716; &#50500;&#47560;&#46020; &#46160; &#44060; &#51060;&#49345;&#51032; &#51089;&#50629; &#48652;&#47116;&#52824;(working branch)&#44032; &#51316;&#51116;&#54616;&#44256; &#44536;&#46308; &#47784;&#46160;&#50640; &#44396;&#45797;&#45796;&#47532; &lt;strong&gt;&#47560;&#51060;&#44536;&#47112;&#51060;&#49496;&lt;/strong&gt;&#51060; &#51080;&#51012; &#44163;&#51060;&#44592; &#46412;&#47928;&#51060;&#45796;. &#50500;&#47560;&#46020; &#48652;&#47116;&#52824;&#47484; &#48337;&#54633;&#54624; &#46412;&#50640; &#49900;&#44033;&#54620; &#52649;&#46028; &#47928;&#51228;&#50640; &#51649;&#47732;&#54616;&#44172; &#46112; &#44163;&#51060;&#45796;.&lt;/p&gt;
&lt;p&gt;&#51060; &#52964;&#45796;&#46976; &#47928;&#51228;&#47484; &#54644;&#44208;&#54616;&#44592; &#50948;&#54644; &#53076;&#50612;&#54016;&#51008; &#47112;&#51068;&#49828;&#51032; &lt;strong&gt;&#47560;&#51060;&#44536;&#47112;&#51060;&#49496;&lt;/strong&gt; &#51089;&#46041; &#48169;&#48277;&#51012; &#48320;&#44221;&#54616;&#50688;&#45796;. schema_info&#51032; &#48260;&#51204; &#52852;&#50868;&#53944;&#50640; &#45824;&#51025;&#54616;&#45716; &#48264;&#54840;&#47484; &#44033; &#47560;&#51060;&#44536;&#47112;&#51060;&#49496; &#54028;&#51068;&#51032; &#50526;&#50640; &#48537;&#51060;&#45716; &#45824;&#49888;, &lt;strong&gt;UTC&lt;/strong&gt; &#49884;&#44036;&#50640; &#44592;&#48152;&#54616;&#47732;&#49436;&amp;nbsp;YYYYMMDDHHMMSS &#54805;&#49885;&#51012; &#46384;&#47476;&#45716; &#47928;&#51088;&#50676;&#51012; &#50526;&#50640; &#48537;&#51060;&#44592;&#47196; &#54620; &#44163;&#51060;&#45796;.&lt;/p&gt;
&lt;p&gt;&#51060;&#50752; &#54632;&#44760; &lt;strong&gt;schema_migrations&lt;/strong&gt;&#46972;&#44256; &#54616;&#45716; &#49352;&#47196;&#50868; &#53580;&#51060;&#48660;&#46020; &#47564;&#46308;&#50612;&#51256;&#49436; &#51060;&#48120; &#49892;&#54665;&#46108; &#47560;&#51060;&#44536;&#47112;&#51060;&#49496;&#46308;&#51060; &#47924;&#50616;&#51648;&#50640; &#44288;&#54620; &#51221;&#48372;&#47484; &#45812;&#44172; &#46108;&#45796;. &#51060;&#47088; &#49885;&#51004;&#47196; &#54616;&#50668;, &#47564;&#50557; &#45572;&#44400;&#44032;&#44032; &#51312;&#44552; &#45908; &#51201;&#51008; &#48264;&#54840;&#51032; &#47560;&#51060;&#44536;&#47112;&#51060;&#49496;&#51012; &#49373;&#49457;&#54616;&#47732;, &#47112;&#51068;&#49828;&#45716; &#44536; &#51060;&#51204; &#48260;&#51204;&#44620;&#51648; &#47196; &lt;strong&gt;&#47204;&#48177;(rollback)&lt;/strong&gt;&#54616;&#44172; &#46104;&#44256; &#51060;&#50612;&#49436; &#54788;&#51116; &#48260;&#51204;&#50640; &#51060;&#47476;&#44592;&#44620;&#51648;&#51032; &#47784;&#46304; &#44163;&#46308;&#51012; &#49892;&#54665;&#54624; &#44163;&#51060;&#45796;.&lt;/p&gt;
&lt;p&gt;&#47749;&#48177;&#55176;, &#51060; &#48169;&#49885;&#51008; &lt;strong&gt;&#47560;&#51060;&#44536;&#47112;&#51060;&#49496;&lt;/strong&gt;&#44284; &#44288;&#47144;&#46108; &#52649;&#46028; &#47928;&#51228;&#47484; &#54644;&#44208;&#54620;&#45796;.&lt;/p&gt;
&lt;p&gt;&#51060; &#44592;&#45733;&#51012; &#48708;&#54876;&#49457;&#54868; &#49884;&#53412;&#47140;&#47732; &lt;strong&gt;environment.rb&lt;/strong&gt;&#50640; &#45796;&#51020; &#51460;&#51012; &#54252;&#54632;&#49884;&#53412;&#47732; &#46108;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;config.active_record.timestamped_migrations = false&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#46608;&#54620; &lt;strong&gt;&#47560;&#51060;&#44536;&#47112;&#51060;&#49496;&lt;/strong&gt;&#51012; "&#54756;&#51665;&#44256; &#45796;&#45768;&#45716;" &#49352; &#47112;&#51060;&#53356; &#53468;&#49828;&#53356;&#46020; &#49373;&#44220;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;rake db:migrate:up&lt;br /&gt;
rake db:migrate:down&lt;/li&gt;
&lt;/ol&gt;
</description>
      <pubDate>Tue, 19 Aug 2008 11:04:45 +0900</pubDate>
      <link>http://rails21-book.springnote.com/pages/1365598</link>
      <guid>http://rails21-book.springnote.com/pages/1365598</guid>
    </item>
    <item>
      <title>05. &#50529;&#49496;&#52968;&#53944;&#47204;&#47084;</title>
      <description>&lt;h1&gt;&#50529;&#49496;&#52968;&#53944;&#47204;&#47084;&lt;/h1&gt;
&lt;p&gt;&#50529;&#49496; &#52968;&#53944;&#47204;&#47084;&#45716; &#50937;&#51004;&#47196;&#48512;&#53552; &#50836;&#52397;&#51012; &#48155;&#50500; &#53945;&#51221; &#51089;&#50629; &#49688;&#54665;&#54616;&#44256;, &#44536; &#44208;&#44284;&#47196; &#47924;&#50616;&#44032;&#47484; &#47116;&#45908;&#47553; &#54624; &#44163;&#51064;&#51648;, &#54841;&#51008; &#45796;&#47480; &#50529;&#49496;&#51004;&#47196; &#47532;&#45796;&#51060;&#47113;&#53944; &#54624; &#44163;&#51064;&#51648; &#46321;&#51012;&amp;nbsp;&#44208;&#51221;&#54616;&#45716; &#52293;&#51076;&#51012; &#44032;&#51652; &#47112;&#51060;&#50612;&#45796;.&lt;/p&gt;
&lt;p&gt;&#50529;&#49496;&#51008; &#52968;&#53944;&#47204;&#47084; &#50504;&#50640;&#49436; &#54140;&#48660;&#47533; &#47700;&#49436;&#46300;&#47196; &#51221;&#51032;&#46104;&#47728;, &#51060; &#47700;&#49436;&#46300;&#45716; &#46972;&#50864;&#54021;&#50640; &#51032;&#54644; &#51088;&#46041;&#51004;&#47196; &#49892;&#54665;&#46108;&#45796;.&lt;/p&gt;
&lt;h2&gt;ActionController::Routing&lt;/h2&gt;
&lt;h3&gt;Map.root&lt;/h3&gt;
&lt;p&gt;&#51648;&#44552;&#48512;&#53552;&#45716; &lt;strong&gt;map.root&lt;/strong&gt;&#47484; &#51221;&#51032;&#54624; &#46412;, &#50668;&#44592;&#50640; &#48324;&#52845;(alias)&#51012; &#49324;&#50857;&#54644; &#51473;&#48373;&#51012; &#54588;&#54624; &#49688; &#51080;&#45796;(DRY).&lt;/p&gt;
&lt;p&gt;&#47112;&#51068;&#49828;&#51032; &#51060;&#51204; &#48260;&#51204;&#50640;&#49436;&#45716; &#45796;&#51020;&#44284; &#44057;&#51060; &#49324;&#50857;&#54664;&#50632;&#45796;:&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;map.new_session :controller =&amp;gt; 'sessions', :action =&amp;gt; 'new'&lt;br /&gt;
map.root :controller =&amp;gt; 'sessions', :action =&amp;gt; 'new'&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#51060;&#51228;&#45716; &#45796;&#51020;&#44284; &#44057;&#51060; &#54624; &#49688; &#51080;&#45796;:&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;map.new_session :controller =&amp;gt; 'sessions', :action =&amp;gt; 'new'&lt;br /&gt;
map.root :new_session&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;&#46972;&#50864;&#53944; &#51064;&#49885;&lt;/h3&gt;
&lt;p&gt;&#46972;&#50864;&#53944; &#51064;&#49885;(Routes recognition)&#51012; &#44396;&#54788;&#54616;&#45716;&#45936; &#50696;&#51204;&#50640;&#45716; &#46972;&#50864;&#53944; &#54616;&#45208;&#54616;&#45208;&#47484; &#47784;&#46160; &#44160;&#49324;&#54664;&#50632;&#45716;&#45936;, &#51060; &#48169;&#49885;&#51008; &#44036;&#54841; &#44596; &#51025;&#45813;&#49884;&#44036;&#51012; &#48372;&#51060;&#44592;&#46020; &#54664;&#45796;. &#44536;&#47000;&#49436; &#49352;&#47196;&#50868; &#48169;&#49885;&#51032; &#45908; &#46609;&#46609;&#54620; &#44396;&#54788;&#51060; &#46020;&#51077;&#46104;&#50632;&#45796;. &#51060;&#51228; &#46972;&#50864;&#53944;&#51032; &#53944;&#47532;&#47484; &#49373;&#49457;&#54616;&#44256;, &#46972;&#50864;&#53944; &#51064;&#49885;&#51008; &#50976;&#49324;&#54620; &#46972;&#50864;&#53944;&#47484;&amp;nbsp;&#51217;&#46160;&#50612;&#47196; &#47926;&#44256;, &#44148;&#45320;&#46832;&#44592;&#46020; &#54620;&#45796;. &#51060;&amp;nbsp;&#48169;&#49885;&#51008; &#49884;&#44036;&#51012; &#45824;&#47029; 2.7&#48176; &#51221;&#46020; &#45800;&#52629;&#49884;&#53040;&#45796;.&lt;/p&gt;
&lt;p&gt;&#47784;&#46304; &#44396;&#54788;&#51008;&amp;nbsp;&lt;strong&gt;recognition&lt;/strong&gt;&lt;strong&gt;_&lt;/strong&gt;&lt;strong&gt;optimisation&lt;/strong&gt;&lt;strong&gt;.rb&lt;/strong&gt; &#54028;&#51068;&#50640; &#51080;&#51004;&#47728;, &#49892;&#51228; &#46041;&#51089;&#50640; &#45824;&#54620; &#51088;&#49464;&#54620; &#49324;&#54637;&#51008; &#51452;&#49437;&#51004;&#47196; &#51096; &#49444;&#47749;&#54616;&#44256; &#51080;&#45796;. &#51060; &#44396;&#54788;&#50640; &#45824;&#54616;&#50668; &#45908; &#47566;&#51008; &#51221;&#48372;&#47484; &#50619;&#44256;&#51088; &#54620;&#45796;&#47732; &#49548;&#49828;&#53076;&#46300; &#50504;&#50640; &#51080;&#45716; &#47928;&#49436;&#47484; &#52280;&#44256;&#54616;&#44600; &#48148;&#46976;&#45796;.&lt;/p&gt;
&lt;h3&gt;Assert_routing&lt;/h3&gt;
&lt;p&gt;&#51060;&#51228; &#46972;&#50864;&#53944;&#47484; &#53580;&#49828;&#53944;&#54624; &#46412; HTTP &#47700;&#49436;&#46300;&#47484; &#54632;&#44760; &#49324;&#50857;&#54624; &#49688; &#51080;&#45796;. &#50500;&#47000; &#50696;&#51228;&#47484; &#48372;&#46972;:&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;assert_routing({ :method =&amp;gt; 'put',&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; :path =&amp;gt; '/product/321' },&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{ :controller =&amp;gt; "product",&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;:action =&amp;gt; "update",&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;:id =&amp;gt; "321" })&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Map.resources&lt;/h3&gt;
&lt;p&gt;&#50689;&#50612;&#44032; &#50500;&#45772; &#50616;&#50612;&#47484; &#49324;&#50857;&#54616;&#45716; &#49324;&#51060;&#53944;&#44032; &#51080;&#44256;, &#51060; &#49324;&#51060;&#53944;&#50640;&#49436; &#46972;&#50864;&#53944;&#47484; &#44536; &#50616;&#50612;&#47196; &#51221;&#51032;&#54616;&#44256; &#49910;&#45796;&#44256; &#44032;&#51221;&#54644;&#48372;&#51088;. &#50696;&#47484; &#46308;&#50612; &#50500;&#47000; URL&#51060; &#51080;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;&lt;a href="http://www.mysite.com.br/products/1234/reviews"&gt;http://www.mysite.com.br/products/1234/reviews&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#51060; URL &#45824;&#49888; &#45796;&#51020;&#44284; &#44057;&#51060; &#54616;&#44592;&#47484; &#50896;&#54620;&#45796;&#44256; &#54644;&#48372;&#51088;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;&lt;a href="http://www.mysite.com.br/produtos/1234/comentarios"&gt;http://www.mysite.com.br/produtos/1234/comentarios&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#51060;&#44163;&#51008; &#51060;&#48120; &#44032;&#45733;&#54616;&#44596; &#54616;&#51648;&#47564;, &#49772;&#50868; &#48169;&#48277;&#51060; &#50500;&#45768;&#47728;&amp;nbsp;&#47112;&#51068;&#49828; &#44288;&#47168;&#50640; &#48152;&#54616;&#45716; &#44163;&#51060;&#44592;&#46020; &#54616;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&#51648;&#44552;&#48512;&#53552;&#45716; &#46972;&#50864;&#53944;&#50640; &#44060;&#51064;&#54868;&#47484; &#51201;&#50857;&#54616;&#44592; &#50948;&#54620; &#50857;&#46020;&#47196; &lt;strong&gt;map.resources&lt;/strong&gt;&#50640; &lt;strong&gt;:as&lt;/strong&gt; &#50741;&#49496;&#51012; &#49324;&#50857;&#54624; &#49688; &#51080;&#45796;. &#50500;&#47000;&#45716; &#50948; URL&#51012; &#54252;&#53944;&#53804;&#44040;&#50612;&#47196; &#48148;&#44984;&#45716; &#50696;&#51228;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;map.resources :products, :as =&amp;gt; 'produtos' do |product|&lt;br /&gt;
&amp;nbsp; # product_reviews_path(product) ==&lt;br /&gt;
&amp;nbsp; # '/produtos/1234/comentarios&#8217;&lt;br /&gt;
&amp;nbsp; product.resources :product_reviews, :as =&amp;gt; 'comentarios'&lt;br /&gt;
end&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;ActionController::Caching::Sweeping&lt;/h2&gt;
&lt;p&gt;&#47112;&#51068;&#49828;&#51032; &#51060;&#51204; &#48260;&#51204;&#50640;&#49436; &lt;strong&gt;sweeper&lt;/strong&gt;&#47484; &#49440;&#50616;&#54624; &#46412;&#45716;, &#53364;&#47000;&#49828;&#47484; &#49900;&#48380;&#51012; &#49324;&#50857;&#54616;&#50668; &#54364;&#54788;&#54664;&#45796;:&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;class ListsController &amp;lt; ApplicationController&lt;br /&gt;
&amp;nbsp; caches_action :index, :show, :public, :feed&lt;br /&gt;
&amp;nbsp; cache_sweeper :list_sweeper, :only =&amp;gt; [ :edit, :destroy, :share ]&lt;br /&gt;
end&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&#51060;&#51228; &#49900;&#48380; &#45824;&#49888; &#53364;&#47000;&#49828;&#47484; &#51649;&#51217; &#49324;&#50857;&#54644; &#49440;&#50616;&#54624; &#49688; &#51080;&#44172; &#46104;&#50632;&#45796;.&lt;/p&gt;
&lt;p&gt;&#51060;&#45716; &lt;strong&gt;sweeper&lt;/strong&gt;&#44032; &#47784;&#46280; &#50504;&#50640; &#51221;&#51032;&#46104;&#50612; &#51080;&#45716; &#44221;&#50864; &#54596;&#50836;&#54616;&#45796;. &#47932;&#47200; &#50668;&#51204;&#55176; &#49900;&#48380;&#47484; &#49324;&#50857;&#54624; &#49688;&#46020; &#51080;&#51648;&#47564;, &#50500;&#47000;&#52376;&#47100; &#54616;&#45716; &#44163;&#46020; &#44032;&#45733;&#54616;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;class ListsController &amp;lt; ApplicationController&lt;br /&gt;
&amp;nbsp; caches_action :index, :show, :public, :feed&lt;br /&gt;
&amp;nbsp; cache_sweeper OpenBar::Sweeper, :only =&amp;gt; [ :edit, :destroy, :share ]&lt;br /&gt;
end&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
</description>
      <pubDate>Fri, 04 Jul 2008 18:32:49 +0900</pubDate>
      <link>http://rails21-book.springnote.com/pages/1365638</link>
      <guid>http://rails21-book.springnote.com/pages/1365638</guid>
    </item>
    <item>
      <title>07. Railties</title>
      <description>&lt;h1&gt;Railties&lt;/h1&gt;
&lt;h2&gt;config.gem&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;environment.rb&lt;/strong&gt; &#54028;&#51068;&#50640; &#51080;&#45716; &lt;strong&gt;config.gem&lt;/strong&gt; &#49444;&#51221;&#51012; &#51060;&#50857;&#54644;&#49436; &#54532;&#47196;&#51229;&#53944;&#47484; &#49892;&#54665;&#54616;&#45716;&#45936; &#54596;&#50836;&#54620; &#47784;&#46304; gem&#46308;&#51012;&amp;nbsp;&#49444;&#51221;&#54624; &#49688; &#51080;&#45796;. &#51060; &#49444;&#51221;&#51008; &#54532;&#47196;&#51229;&#53944;&#44032; &#49324;&#50857;&#54616;&#45716; gem&#46308;&#50640; &#45824;&#54620; &#51032;&#51316;&#44288;&#44228;&#47484; &#47749;&#49884;&#54620;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;config.gem "bj"&lt;br /&gt;
&lt;br /&gt;
config.gem "hpricot", :version =&amp;gt; '0.6',&lt;br /&gt;
:source =&amp;gt; "http://code.whytheluckystiff.net"&lt;br /&gt;
&lt;br /&gt;
config.gem "aws-s3", :lib =&amp;gt; "aws/s3"&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#51032;&#51316;&#44288;&#44228;&#50640; &#51080;&#45716; gem&#46308;&#51012; &#47784;&#46160; &#49444;&#52824;&#54616;&#44256; &#49910;&#51004;&#47732; &#45796;&#51020;&#44284; &#44057;&#51008; Rake &#53468;&#49828;&#53356;&#47484; &#51060;&#50857;&#54624; &#49688; &#51080;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;# Installs all specified gems&lt;br /&gt;
rake gems:install&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#50612;&#46500; gem&#46308;&#51060; &#54532;&#47196;&#51229;&#53944;&#50640;&#49436; &#49324;&#50857;&#46104;&#44256; &#51080;&#45716;&#51648; &#48372;&#44592; &#50948;&#54644;&#49436; &#45796;&#51020;&#44284; &#44057;&#51008; Rake &#53468;&#49828;&#53356;&#47484; &#51060;&#50857;&#54624; &#49688; &#51080;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;# Listing all gem dependencies&lt;br /&gt;
rake gems&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;gem &#51060; &lt;strong&gt;rails/init.rb&lt;/strong&gt; &#54028;&#51068;&#51012; &#44032;&#51648;&#44256; &#51080;&#45716; &#49345;&#53468;&#50640;&#49436;, &#50528;&#54540;&#47532;&#52992;&#51060;&#49496;&#51060; gem&#51012; &#54252;&#54632;&#54616;&#44592;&#47484; &#50896;&#54620;&#45796;&#47732; &#45796;&#51020; Rake &#53468;&#49828;&#53356;&#47484; &#51060;&#50857;&#54624; &#49688; &#51080;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;# Copy the specified gem to vendor/gems/nome_do_gem-x.x.x&lt;br /&gt;
rake gems:unpack GEM=gem_name&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#44536;&#47084;&#47732; gem_name&#51032; gem&#51008; &lt;strong&gt;vendor/gems/gem_name-xxx&lt;/strong&gt; &#46356;&#47113;&#53664;&#47532;&#50640; &#48373;&#49324;&#46112; &#44163;&#51060;&#45796;. gem_name &#51012; &#49324;&#50857;&#54616;&#51648; &#50506;&#45716; &#44221;&#50864;&#50640;&#45716; &lt;strong&gt;vendor/gem&lt;/strong&gt; &#46356;&#47113;&#53664;&#47532;&#50640; &#47784;&#46304; gem&#46308;&#51012; &#48373;&#49324;&#54624; &#44163;&#51060;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;&#54540;&#47084;&#44536;&#51064;&#50640;&#49436;&#51032; config.gem&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;config.gem&lt;/strong&gt; &#49444;&#51221;&#51008; &#54540;&#47084;&#44536;&#51064;&#50640;&#49436;&#46020; &#50669;&#49884; &#49324;&#50857; &#44032;&#45733;&#54616;&#45796;.&lt;/p&gt;
&lt;p&gt;Rails 2.0 &#44620;&#51648;&#45716; &#54540;&#47084;&#44536;&#51064;&#51032;&lt;strong&gt;&amp;nbsp;init.rb&lt;/strong&gt; &#54028;&#51068;&#51060; &#45796;&#51020;&#44284; &#44057;&#51008; &#54805;&#49885;&#51060;&#50632;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;# init.rb of plugin open_id_authentication&lt;br /&gt;
require 'yadis'&lt;br /&gt;
require 'openid'&lt;br /&gt;
ActionController::Base.send :include, OpenIdAuthentication&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&#44536;&#47084;&#45208;, Rails 2.1 &#50640;&#49436;&#45716; &lt;strong&gt;init.rb&lt;/strong&gt; &#54028;&#51068;&#51060; &#45796;&#51020;&#44284; &#44057;&#51012; &#44163;&#51060;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;config.gem "ruby-openid", :lib =&amp;gt; "openid", :version =&amp;gt; "1.1.4"&lt;br /&gt;
config.gem "ruby-yadis", :lib =&amp;gt; "yadis", :version =&amp;gt; "0.3.4"&lt;br /&gt;
&lt;br /&gt;
config.after_initialize do&lt;br /&gt;
ActionController::Base.send :include, OpenIdAuthentication&lt;br /&gt;
end&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#47784;&#46304; &#54596;&#50836;&#54620; gem&#46308;&#51012; &#49444;&#52824;&#54616;&#45716; &#53468;&#49828;&#53356;(rake gems:install)&#47484; &#49688;&#54665;&#54624; &#46412;, &#51060; gem&#46308; &#50669;&#49884; &#49444;&#52824;&#46112; &#44163;&#51060;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;gems:build&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;gems:build&lt;/strong&gt; &#53468;&#49828;&#53356;&#45716;&amp;nbsp;&lt;strong&gt;gems:unpack&lt;/strong&gt;&#51012; &#53685;&#54644; &#49444;&#52824;&#46108; gem&#46308;&#51032; native extension&#46308;&#51012; &#52980;&#54028;&#51068; &#54620;&#45796;. &#47928;&#48277;&#51008; &#45796;&#51020;&#44284; &#44057;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;rake gems:build # &#47784;&#46304; gem&#46308;&#50640; &#45824;&#54644;&lt;br /&gt;
rake gems:build GEM=mygem # mygem&#50640; &#45824;&#54644;&#49436;&#47564;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;&#49436;&#48260;&#47484; &#49884;&#51089;&#54624;&#46412; &#48372;&#50668;&#51648;&#45716; &#49352; &#47700;&#49884;&#51648;&lt;/h2&gt;
&lt;p&gt;Rails &#49436;&#48260;&#47484; &#49884;&#51089;&#54624; &#46412; &#50557;&#44036;&#51032; &#44060;&#49440;&#49324;&#54637;&#51060; &#51080;&#45796;. &#44536;&#44163;&#51008; &#49892;&#54651;&#46104;&#45716; Rails&#51032; &#48260;&#51204;&#51012; &#48372;&#50668;&#51452;&#45716; &#44163;&#51060;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;Rails 2.1 application starting on &lt;a href="http://0.0.0.0:3000"&gt;http://0.0.0.0:3000&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Rails.public_path&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Rails.public_path&lt;/strong&gt; &#47484; &#53685;&#54644; &#54532;&#47196;&#51229;&#53944;&#51032; &lt;strong&gt;"public"&lt;/strong&gt; &#46356;&#47113;&#53664;&#47532;&#47484;&amp;nbsp;&#50508; &#49688; &#51080;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;Rails.public_path&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Rails.logger, Rails.root, Rails.env and Rails.cache&lt;/h2&gt;
&lt;p&gt;Rails 2.1&#50640;&#49436;&#45716; &lt;strong&gt;RAILS_DEFAULT_LOGGER&lt;/strong&gt;, &lt;strong&gt;RAILS_ROOT&lt;/strong&gt;, &lt;strong&gt;RAILS_ENV&lt;/strong&gt;, &#44536;&#47532;&#44256; &lt;strong&gt;RAILS_CACHE&lt;/strong&gt; &#49345;&#49688;&#46308; &#45824;&#49888; &#45796;&#51020;&#44284; &#44057;&#51060; &#49324;&#50857;&#54624; &#49688; &#51080;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;# RAILS_DEFAULT_LOGGER&lt;br /&gt;
Rails.logger&lt;br /&gt;
&lt;br /&gt;
# RAILS_ROOT&lt;br /&gt;
Rails.root&lt;br /&gt;
&lt;br /&gt;
# RAILS_ENV&lt;br /&gt;
Rails.env&lt;br /&gt;
&lt;br /&gt;
# RAILS_CACHE&lt;br /&gt;
Rails.cache&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Rails.version&lt;/h2&gt;
&lt;p&gt;Rails 2.0 &#44620;&#51648;&#45716; &#49892;&#54665; &#51473;&#50640; &#50612;&#46500; Rails &#48260;&#51204;&#51060; &#49324;&#50857;&#46104;&#44256; &#51080;&#45716;&#51648; &#54869;&#51064;&#54616;&#44592; &#50948;&#54644; &#45796;&#51020;&#44284; &#44057;&#51008; &#53076;&#46300;&#44032; &#49324;&#50857;&#46104;&#50632;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;Rails::VERSION::STRING&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Rails 2.1&#50640;&#49436;&#45716; &#45796;&#51020;&#44284; &#44057;&#51060; &#45908; &#44036;&#54200;&#54644;&#51276;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;Rails.version&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;&#54540;&#47084;&#44536;&#51064;&#50640; &#45824;&#54620; &#51221;&#48372; &#50619;&#44592;&lt;/h2&gt;
&lt;p&gt;&#51060;&#44163;&#51008; Rails 2.0&#51032; &#49352;&#47196;&#50868; &#44592;&#45733; &#51473; &#54616;&#45208;&#51060;&#45796;. &#50500;&#47560; &#51096; &#49324;&#50857;&#54616;&#51648;&#45716; &#50506;&#50520;&#44192;&#51648;&#47564;.. &#54616;&#51648;&#47564; &#51060;&#44163;&#51008;&amp;nbsp;&#54540;&#47084;&#44536;&#51064;&#51032; &#48260;&#51260;&#51012; &#50508;&#44256; &#49910;&#51008; &#44221;&#50864; &#44057;&#51008; &#53945;&#49688;&#54620; &#49345;&#54889;&#50640;&#49436;&#45716; &#50976;&#50857;&#54624; &#49688; &#51080;&#45796;.&lt;/p&gt;
&lt;p&gt;&#53580;&#49828;&#53944;&#51012; &#50948;&#54644; &#45796;&#51020;&#44284; &#44057;&#51060; plugin &#46356;&#47113;&#53664;&#47532;&#50640; about.yml&#51060;&#46972;&#45716; &#49352; &#54028;&#51068;&#51012; &#49373;&#49457;&#54620;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;author: Carlos Brando&lt;br /&gt;
version: 1.2.0&lt;br /&gt;
description: A description about the plugin&lt;br /&gt;
url: http://www.nomedojogo.com&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#51060; &#51221;&#48372;&#47484; &#45796;&#51020;&#44284; &#44057;&#51008; &#53076;&#46300;&#47196; &#50619;&#51012; &#49688; &#51080;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;plugin = Rails::Plugin.new(plugin_directory)&lt;br /&gt;
plugin.about["author"] # =&amp;gt; &#8220;Carlos Brando&#8221;&lt;br /&gt;
plugin.about["url"] # =&amp;gt; &#8220;http://www.nomedojogo.com&#8221;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#51060; &#44592;&#45733;&#50640; &#45824;&#54644; &#50976;&#50857;&#54620; &#49324;&#50857;&#48169;&#48277;&#51012; &#50508;&#44256; &#51080;&#44256;, &#44536;&#44163;&#51012; &#44277;&#50976;&#54616;&#44256; &#49910;&#51004;&#47732; &#50508;&#47140;&#51452;&#49464;&#50836;.&lt;/p&gt;
</description>
      <pubDate>Tue, 01 Jul 2008 16:12:08 +0900</pubDate>
      <link>http://rails21-book.springnote.com/pages/1365644</link>
      <guid>http://rails21-book.springnote.com/pages/1365644</guid>
    </item>
    <item>
      <title>08. &#47000;&#51060;&#53356; &#51089;&#50629;</title>
      <description>&lt;h1&gt;Rake Tasks, &#54540;&#47084;&#44536;&#51064;, &#44536;&#47532;&#44256; Scripts&lt;/h1&gt;
&lt;h2&gt;Rake Tasks&lt;/h2&gt;
&lt;h3&gt;rails:update&lt;/h3&gt;
&lt;p&gt;&#51060;&#51228;&#48512;&#53552; &lt;strong&gt;rake rails:freeze:edge&lt;/strong&gt; &#53468;&#49828;&#53356;&#47484; &#49688;&#54665;&#54624; &#46412;&#47560;&#45796; &lt;strong&gt;rails:update&lt;/strong&gt; &#53468;&#49828;&#53356;&#46020; &#49688;&#54665;&#46108;&#45796;. &#44536;&#47100;&#51004;&#47196;&#50024; config &#54028;&#51068;&#46308;&#44284; &lt;em&gt;JavaScripts&lt;/em&gt;&amp;nbsp;&#47484; &#44081;&#49888;&#54620;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;127.0.0.1&#50640; &#51080;&#45716; database&lt;/h3&gt;
&lt;p&gt;database.rake&#45716; local database&#50640; &#45824;&#54644; localhsot &#47564; &#51064;&#49885;&#54664;&#45796;. &#51060;&#51228;&#45716; &lt;strong&gt;127.0.0.1&lt;/strong&gt; &#50669;&#49884; &#51064;&#49885;&#54620;&#45796;. &#51060;&#44163;&#51008; &lt;strong&gt;create&lt;/strong&gt;&#50752; &lt;strong&gt;drop&lt;/strong&gt; &#53468;&#49828;&#53356; &#47784;&#46160;&#50640; &#46041;&#51089;&#54620;&#45796;. &#46608;&#54620; database.rake &#54028;&#51068;&#51008; &#51473;&#48373;&#51012; &#51460;&#51060;&#44592; &#50948;&#54644; &#47532;&#54057;&#53664;&#47553;&#46104;&#50632;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;&#53945;&#51221;&#54620; Rails&#51032; &#47540;&#47532;&#51592;&#47484; &#50620;&#47532;&#44592;(Freezing).&lt;/h3&gt;
&lt;p&gt;Rails 2.1 &#51060;&#51204;&#50640;&#45716; &#53945;&#51221;&#54620; Rails&#51032; &#47540;&#47532;&#51592;&#47484; &#54532;&#47196;&#51229;&#53944;&#50640; &#50620;&#47532;&#44592;&#44032; &#48520;&#44032;&#45733;&#54664;&#45796;. &#45796;&#47564; Revision&#51012; &#54028;&#46972;&#48120;&#53552;&#47196; &#49324;&#50857;&#54624; &#49688; &#51080;&#50632;&#51012; &#49104;&#51060;&#50632;&#45796;. Rails 2.1 &#50640;&#49436;&#45716; &#50500;&#47000;&#50752; &#44057;&#51060; &#53945;&#51221;&#54620; &#47540;&#47532;&#51592;&#47484; &#49440;&#53469;&#54644;&#49436; &#50620;&#47540; &#49688; &#51080;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;rake rails:freeze:edge RELEASE=1.2.0&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;&#49884;&#44036;&#45824;(TimeZone)&lt;/h2&gt;
&lt;h4&gt;rake time:zones:all&lt;/h4&gt;
&lt;p&gt;Rails&#44032; &#50508;&#44256; &#51080;&#45716; &#47784;&#46304; &#49884;&#44036;&#45824;(time zone)&#46308;&#51012; &#50724;&#54532;&#49483;(offset)&#51004;&#47196; &#44536;&#47353;&#51648;&#50612; &#48372;&#50668;&#51456;&#45796;. OFFSET &#50741;&#49496; &#54028;&#46972;&#48120;&#53552;&#47484; &#51060;&#50857;&#54644;&#49436; &#44208;&#44284;&#47484;&amp;nbsp;&#44152;&#47084;&#45244; &#49688;&amp;nbsp;&#51080;&#45796;.&lt;/p&gt;
&lt;p&gt;&#50696;&#47484; &#46308;&#47732; OFFSET=-6 &#45716; &#50724;&#54532;&#49483;&#51060; -6:00&#51064; &#49884;&#44036;&#45824;&#47564; &#48372;&#50668;&#51456;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;rake time:zones:us&lt;/h4&gt;
&lt;p&gt;US &#49884;&#44036;&#45824;&#51032; &#47785;&#47197;&#51012; &#48372;&#50668;&#51456;&#45796;. OFFSET &#50741;&#49496;&#51012; &#49324;&#50857;&#54624; &#49688; &#51080;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;rake time:zones:local&lt;/h4&gt;
&lt;p&gt;&#45817;&#49888;&#51032; OS&#51032; &#49884;&#44036;&#45824; &#50724;&#54532;&#49483;&#44284; &#44057;&#51008; &#49884;&#44036;&#45824; &#47785;&#47197;&#51012; &#48372;&#50668;&#51456;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Scripts&lt;/h2&gt;
&lt;h3&gt;plugin&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;script/plugin install&lt;/em&gt; &#47749;&#47161;&#50640;&amp;nbsp;-e/--export &#50741;&#49496;&#51012; &#49324;&#50857;&#54624; &#49688; &#51080;&#45796;.&amp;nbsp;&#51060; &#50741;&#49496;&#51060; &#49444;&#51221;&#46104;&#50612; &#51080;&#51004;&#47732; svn export&#47484; &#49688;&#54665;&#54620;&#45796;.&lt;/p&gt;
&lt;p&gt;&#44536;&#47532;&#44256; GIT &#51200;&#51109;&#49548;(repository)&#50640; &#51080;&#45716; &#54540;&#47084;&#44536;&#51064;&#46308;&#50640; &#45824;&#54620; &#51648;&#50896;&#51060; &#52628;&#44032;&#46104;&#50632;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;dbconsole&lt;/h3&gt;
&lt;p&gt;&#51060; &#49828;&#53356;&#47549;&#53944;&#45716; database&#50640; &#45824;&#54644; script/console&#44284; &#44057;&#51008; &#46041;&#51089;&#51012; &#54620;&#45796;. &#51593; database&#51032; &#47749;&#47161; &#49688;&#54665; &#53364;&#46972;&#51060;&#50616;&#53944;(command line client)&#50640; &#51217;&#49549;&#54620;&#45796;.&lt;/p&gt;
&lt;p&gt;&#53076;&#46300;&#47484; &#49332;&#54196;&#48372;&#47732;, &#51060; &#49828;&#53356;&#47549;&#53944;&#45716; mysql, postgresql &#44536;&#47532;&#44256; sqlite(3) &#50640;&#49436;&#47564; &#46041;&#51089;&#54624; &#44163;&#51076;&#51012; &#50508; &#49688; &#51080;&#45796;. &#45796;&#47480; database&#44032; database.yml&#50640; &#49444;&#51221;&#46104;&#50612; &#51080;&#45796;&#47732;, &#51060; &#49828;&#53356;&#47549;&#53944;&#45716; "not supported for this database type" &#47700;&#49884;&#51648;&#47484; &#48372;&#50668;&#51460; &#44163;&#51060;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Plugins&lt;/h2&gt;
&lt;h3&gt;Gem &#46020; &#54540;&#47084;&#44536;&#51064;&#51060;&#45796;.&lt;/h3&gt;
&lt;p&gt;&#51060;&#51228;, &lt;strong&gt;rails/init.rb&lt;/strong&gt; &#47484; &#44032;&#51648;&#44256; &#51080;&#45716; &#47784;&#46304; gem&#46308;&#51008; &lt;strong&gt;&#54540;&#47084;&#44536;&#51064;&lt;/strong&gt;&#52376;&#47100; Rails &#54532;&#47196;&#51229;&#53944;&#51032; &lt;strong&gt;vendor&lt;/strong&gt; &#46356;&#47113;&#53664;&#47532; &#48145;&#50640; &#49444;&#52824;&#46112; &#49688; &#51080;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;&#54540;&#47084;&#44536;&#51064;&#50640;&#49436; generators &#49324;&#50857;&#54616;&#44592;&#44592;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Rails&lt;/strong&gt;&#44032; &lt;strong&gt;vendor/plugin&lt;/strong&gt; &#46356;&#47113;&#53664;&#47532;&#44032; &#50500;&#45772; &#45796;&#47480; &#44275;&#50640;&#49436; &lt;strong&gt;&#54540;&#47084;&#44536;&#51064;&lt;/strong&gt;&#51012; &#52286;&#46020;&#47197; &#54624; &#49688; &#51080;&#45796;. &lt;strong&gt;environment.rb&lt;/strong&gt;&#50640; &#45796;&#51020;&#44284; &#44057;&#51008; &#54805;&#49885;&#51032; &#53076;&#46300;&#47484; &#52628;&#44032;&#54616;&#44592;&#47564; &#54616;&#47732; &#46121;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;config.plugin_paths = ['lib/plugins', 'vendor/plugins']&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Rails 2.0&#50640;&#49436;&#45716; &#50948;&#50752; &#44057;&#51008; &#49444;&#51221;&#50528;&#49436; &#54540;&#47084;&#44536;&#51064;&#51060; generators&#47484; &#44032;&#51656; &#46412; &#45208;&#53440;&#45208;&#45716; &#48260;&#44536;&#44032; &#51080;&#50632;&#45796;. &#51060; &#48260;&#44536; &#46412;&#47928;&#50640; Rails&#45716; vendor/plugins &#46356;&#47113;&#53664;&#47532; &#50504;&#50640; &#51080;&#45716; plugin&#50640;&#49436;&#47564; generators&#47484; &#52286;&#50520;&#45796;.&amp;nbsp; 2.1&#50640;&#49436;&#45716; &#51060; &#48260;&#44536;&#44032; &#54644;&#44208;&#46124;&#45796;.&lt;/p&gt;
</description>
      <pubDate>Tue, 01 Jul 2008 16:07:58 +0900</pubDate>
      <link>http://rails21-book.springnote.com/pages/1365646</link>
      <guid>http://rails21-book.springnote.com/pages/1365646</guid>
    </item>
    <item>
      <title>12. &#49688;&#51221;&#46108; &#48260;&#44536;</title>
      <description>&lt;h1&gt;&#49688;&#51221;&#46108; &#48260;&#44536;&lt;/h1&gt;
&lt;h2&gt;PostgreSQL&#50640;&#49436; &#52972;&#47100;&#52628;&#44032;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;PostgreSQL&lt;/strong&gt; &#45936;&#51060;&#53552;&#48288;&#51060;&#49828;&#47484; &#50416;&#47732;&#49436;, &#47560;&#51060;&#44536;&#47112;&#51060;&#49496;&#50640;&#49436; &#44592;&#51316; &#53580;&#51060;&#48660;&#50640; &#52972;&#47100;&#51012; &#52628;&#44032;&#54624; &#46412; &#48260;&#44536;&#44032; &#51080;&#45796;. &#50696;&#51228;&#47484; &#48372;&#51088;.&lt;/p&gt;
&lt;p&gt;File: &lt;em&gt;db/migrate/002_add_cost.rb&lt;/em&gt;&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;class AddCost &amp;lt; ActiveRecord::Migration&lt;br /&gt;
&amp;nbsp; def self.up&lt;br /&gt;
&amp;nbsp; &amp;nbsp;add_column :items, :cost, :decimal, :precision =&amp;gt; 6, :scale =&amp;gt; 2&lt;br /&gt;
&amp;nbsp; end&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; def self.down&lt;br /&gt;
&amp;nbsp; &amp;nbsp;remove_column :items, :cost&lt;br /&gt;
&amp;nbsp; end&lt;br /&gt;
end&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;:precision =&amp;gt; 6, :scale =&amp;gt; 2 &#50741;&#49496;&#51012; &#51452;&#44256; &#52972;&#47100;&#51012; &#49373;&#49457;&#54624; &#44163;&#51060;&#45796;.. &lt;strong&gt;rake db:migrate&lt;/strong&gt; &#47484; &#49892;&#54665;&#54620;&#45796;. &#48320;&#44221;&#46108; &#53580;&#51060;&#48660; &#45236;&#50669;&#51012; &#54869;&#51064;&#54644;&#48372;&#44192;&#45796;.&lt;/p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Column&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Type&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Modifiers&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;id&lt;/td&gt;
&lt;td&gt;integer&lt;/td&gt;
&lt;td&gt;not null&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;desc&lt;/td&gt;
&lt;td&gt;character varying(255)&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;price&lt;/td&gt;
&lt;td&gt;numeric(5,2)&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cost&lt;/td&gt;
&lt;td&gt;numeric&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;"cost"&#52972;&#47100;&#51060; &#49373;&#49457;&#46104;&#50632;&#51648;&#47564; &lt;strong&gt;numeric&lt;/strong&gt;&#53440;&#51077;&#51060;&#45796;. "price"&#50752; &#44057;&#51008; &#52972;&#47100;&#53440;&#51077;&#51060;&#46972; &#52628;&#52769;&#54624; &#49688;&#46020; &#51080;&#45796;. &#54616;&#51648;&#47564; &#51221;&#54869;&#54616;&#44172; &lt;strong&gt;numeric(6,2)&lt;/strong&gt; &#53440;&#51077;&#51060; &#46104;&#50612;&#50556;&#47564; &#54620;&#45796;. &#51060; &#48260;&#44536;&#45716; &#47112;&#51068;&#49828;2.1&#50640;&#49436; &#54644;&#44208;&#46104;&#50632;&#45796;. &#51060;&#51228; &#52972;&#47100;&#51008;&amp;nbsp;&#51032;&#46020;&#54620; &#45824;&#47196; &#49373;&#49457;&#46112; &#44163;&#51060;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;&#47560;&#51076;&#53440;&#51077;(Mime Types)&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;request.format&lt;/strong&gt; &#49549;&#49457;&#44050;&#51004;&#47196;&#49436; &#49900;&#48268;(symbol)&#51012; &#50424; &#49688; &#50630;&#50632;&#45912; &#48260;&#44536;&#51060;&#45796;. &#48260;&#44536;&#45716; &#49688;&#51221;&#46104;&#50632;&#44256; &#50500;&#47000;&#50752; &#44057;&#51060; &#50424; &#49688; &#51080;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;request.format = :iphone&lt;br /&gt;
assert_equal :iphone, request.format&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;change_column&#49884;&#50640; &#48260;&#44536;&#49688;&#51221;&lt;/h2&gt;
&lt;p&gt;:null=&amp;gt;false&#50741;&#49496;&#51004;&#47196; &#49373;&#49457;&#46108; &#52972;&#47100;&#51012; :null=&amp;gt;true&#51064;&#51088;&#47484; &#51452;&#44256; change_column&#54664;&#51012; &#46412; &#51201;&#50857;&#46104;&#51648; &#50506;&#45912; &#48260;&#44536;&#44032; &#49688;&#51221;&#46104;&#50632;&#45796;.&lt;/p&gt;
</description>
      <pubDate>Tue, 24 Jun 2008 21:31:25 +0900</pubDate>
      <link>http://rails21-book.springnote.com/pages/1365666</link>
      <guid>http://rails21-book.springnote.com/pages/1365666</guid>
    </item>
    <item>
      <title>98. &#48264;&#50669; &#54788;&#54889; &#53580;&#51060;&#48660;</title>
      <description>&lt;p&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Chapter&#48324; &#48264;&#50669; &#54788;&#54889; &#53580;&#51060;&#48660;&lt;/span&gt;&lt;/p&gt;
&lt;table class="datatable"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Chapter&lt;/td&gt;
&lt;td&gt;&#48264;&#50669; &#49345;&#53468;&lt;/td&gt;
&lt;td&gt;&#48264;&#50669;&#51088;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="/pages/1364624" class="wiki" title="00. &#49548;&#44060;"&gt;00. &#49548;&#44060;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&#50756;&#47308;&lt;/td&gt;
&lt;td&gt;deepblue&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="/pages/1365598" title="01. &#50529;&#54000;&#48652;&#47112;&#53076;&#46300;" class="wiki"&gt;01. &#50529;&#54000;&#48652;&#47112;&#53076;&#46300;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&#50756;&#47308;&lt;/td&gt;
&lt;td&gt;thinkr&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="/pages/1365624" class="wiki" title="02. &#50529;&#54000;&#48652;&#49436;&#54252;&#53944;"&gt;02. &#50529;&#54000;&#48652;&#49436;&#54252;&#53944;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;deepblue&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="/pages/1365634" class="wiki" title="03. &#50529;&#54000;&#48652;&#47532;&#49548;&#49828;"&gt;03. &#50529;&#54000;&#48652;&#47532;&#49548;&#49828;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&#50756;&#47308;&lt;/td&gt;
&lt;td&gt;deepblue&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="/pages/1365636" class="wiki" title="04. &#50529;&#49496;&#54057;"&gt;04. &#50529;&#49496;&#54057;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&#50756;&#47308;&lt;/td&gt;
&lt;td&gt;jasonpa&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="/pages/1365638" title="05. &#50529;&#49496;&#52968;&#53944;&#47204;&#47084;" class="wiki"&gt;05. &#50529;&#49496;&#52968;&#53944;&#47204;&#47084;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&#50756;&#47308;&lt;/td&gt;
&lt;td&gt;humbroll&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="/pages/1365640" class="wiki" title="06. &#50529;&#49496;&#48624;"&gt;06. &#50529;&#49496;&#48624;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&#50756;&#47308;&lt;/td&gt;
&lt;td&gt;ikspres&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="/pages/1365644" class="wiki" title="07. Railties"&gt;07. Railties&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&#50756;&#47308;&lt;/td&gt;
&lt;td&gt;chang&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="/pages/1365646" class="wiki" title="08. &#47000;&#51060;&#53356; &#51089;&#50629;"&gt;08. &#47000;&#51060;&#53356; &#51089;&#50629;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&#50756;&#47308;&lt;/td&gt;
&lt;td&gt;chang&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="/pages/1365652" class="wiki" title="09. Prototype&#44284; script.aculo.us"&gt;09. Prototype&#44284; script.aculo.us&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&#50756;&#47308;&lt;/td&gt;
&lt;td&gt;deepblue&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="/pages/1365660" class="wiki" title="10. &#47336;&#48708; 1.9"&gt;10. &#47336;&#48708; 1.9&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&#50756;&#47308;&lt;/td&gt;
&lt;td&gt;deepblue&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="/pages/1365662" class="wiki" title="11. &#46356;&#48260;&#44536;"&gt;11. &#46356;&#48260;&#44536;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&#50756;&#47308;&lt;/td&gt;
&lt;td&gt;deepblue&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="/pages/1365666" class="wiki" title="12. &#49688;&#51221;&#46108; &#48260;&#44536;"&gt;12. &#49688;&#51221;&#46108; &#48260;&#44536;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&#50756;&#47308;&lt;/td&gt;
&lt;td&gt;allieus&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="/pages/1365668" class="wiki" title="13. &#52628;&#44032; &#51221;&#48372;"&gt;13. &#52628;&#44032; &#51221;&#48372;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&#50756;&#47308;&lt;/td&gt;
&lt;td&gt;jangxyz&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
</description>
      <pubDate>Tue, 24 Jun 2008 21:29:26 +0900</pubDate>
      <link>http://rails21-book.springnote.com/pages/1369772</link>
      <guid>http://rails21-book.springnote.com/pages/1369772</guid>
    </item>
    <item>
      <title>99. &#48264;&#50669; &#51652;&#54665; &#49345;&#54889;&#54032;</title>
      <description>&lt;p&gt;&#51060; &#54168;&#51060;&#51648;&#45716; &#50948;&#47196; &#51088;&#46989;&#45768;&#45796;.&amp;nbsp;&lt;/p&gt;
&lt;hr /&gt;
&lt;ul class="list-type-4"&gt;
&lt;li&gt;&lt;a href="/pages/1365666" class="wiki" title="12. &#49688;&#51221;&#46108; &#48260;&#44536;"&gt;12. &#49688;&#51221;&#46108; &#48260;&#44536;&lt;/a&gt; &#47560;&#52452;&#49845;&#45768;&#45796;. - allieus&lt;/li&gt;
&lt;li&gt;&lt;a href="/pages/1365636" class="wiki" title="04. &#50529;&#49496;&#54057;"&gt;04. &#50529;&#49496;&#54057;&lt;/a&gt;&amp;nbsp;&#47560;&#52452;&#49800; - jasonpa&lt;/li&gt;
&lt;li&gt;&lt;a href="/pages/1365668" title="13. &#52628;&#44032; &#51221;&#48372;" class="wiki"&gt;13. &#52628;&#44032; &#51221;&#48372;&lt;/a&gt; &#48264;&#50669; &#47560;&#52452;&#49845;&#45768;&#45796;. - jangxyz&lt;/li&gt;
&lt;li&gt;&lt;a href="/pages/1365668" title="13. &#52628;&#44032; &#51221;&#48372;" class="wiki"&gt;13. &#52628;&#44032; &#51221;&#48372;&lt;/a&gt; &#48264;&#50669; &#49884;&#51089;&#54633;&#45768;&#45796;. - jangxyz&lt;/li&gt;
&lt;li&gt;4&#51109; 13&#51109;&#46020; &#48512;&#53441;&#46300;&#47549;&#45768;&#45796;. &#50612;&#49436; &#52252; &#54644;&#51452;&#49464;&#50836;. - deepblue&lt;/li&gt;
&lt;li&gt;&lt;a href="/pages/1365624" class="wiki" title="02. &#50529;&#54000;&#48652;&#49436;&#54252;&#53944;"&gt;02. &#50529;&#54000;&#48652;&#49436;&#54252;&#53944;&lt;/a&gt; &#48264;&#50669; &#49884;&#51089;&#54633;&#45768;&#45796; - deepblue&lt;/li&gt;
&lt;li&gt;&lt;a href="/pages/1365598" title="01. &#50529;&#54000;&#48652;&#47112;&#53076;&#46300;" class="wiki"&gt;01. &#50529;&#54000;&#48652;&#47112;&#53076;&#46300;&lt;/a&gt; &#48264;&#50669; &#47560;&#52452;&#49845;&#45768;&#45796;. - thinkr&lt;/li&gt;
&lt;li&gt;&lt;a href="/pages/1365644" class="wiki" title="07. Railties"&gt;07. Railties&lt;/a&gt; &#48264;&#50669; &#47560;&#52452;&#49845;&#45768;&#45796;. - chang&lt;/li&gt;
&lt;li&gt;&lt;a href="/pages/1365644" class="wiki" title="07. Railties"&gt;07. Railties&lt;/a&gt; &#48264;&#50669; &#49884;&#51089;&#54633;&#45768;&#45796;. - chang&lt;/li&gt;
&lt;li&gt;&lt;a href="/pages/1365598" title="01. &#50529;&#54000;&#48652;&#47112;&#53076;&#46300;" class="wiki"&gt;01. &#50529;&#54000;&#48652;&#47112;&#53076;&#46300;&lt;/a&gt; &#48264;&#50669; &#49884;&#51089;&#54633;&#45768;&#45796;. - thinkr&lt;/li&gt;
&lt;li&gt;&lt;a href="/pages/1365646" title="08. &#47000;&#51060;&#53356; &#51089;&#50629;" class="wiki"&gt;08. &#47000;&#51060;&#53356; &#51089;&#50629;&lt;/a&gt; &amp;nbsp;&#48264;&#50669; &#47560;&#52452;&#49845;&#45768;&#45796;. - chang&lt;/li&gt;
&lt;li&gt;&lt;a href="/pages/1365640" title="06. &#50529;&#49496;&#48624;" class="wiki"&gt;06. &#50529;&#49496;&#48624;&lt;/a&gt; &#48264;&#50669; &#47560;&#52452;&#49845;&#45768;&#45796;. - ikspres&lt;/li&gt;
&lt;li&gt;&lt;a href="/pages/1365640" title="06. &#50529;&#49496;&#48624;" class="wiki"&gt;06. &#50529;&#49496;&#48624;&lt;/a&gt; &#48264;&#50669; &#49884;&#51089;&#54633;&#45768;&#45796;. - ikspres&lt;/li&gt;
&lt;li&gt;&lt;a href="/pages/1365646" title="08. &#47000;&#51060;&#53356; &#51089;&#50629;" class="wiki"&gt;08. &#47000;&#51060;&#53356; &#51089;&#50629;&lt;/a&gt; &amp;nbsp;&#48264;&#50669; &#49884;&#51089;&#54633;&#45768;&#45796;. - chang&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="/pages/1365638" title="05. &#50529;&#49496;&#52968;&#53944;&#47204;&#47084;" class="wiki"&gt;05. &#50529;&#49496;&#52968;&#53944;&#47204;&#47084;&lt;/a&gt; &#49884;&#51089;&#54633;&#45768;&#45796;. - humbroll&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&#50724;&#54840; humbroll &#50504;&#45397;~~ - deepblue&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&#45796; &#54664;&#45716;&#45936; &#50612;&#49353;&#54620; &#48512;&#48516;&#51060; &#50557;&#44036; &#51080;&#50612;&#50836;.&#12619; &#48400;&#51452;&#49464;&#50836;~ - humbroll&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="/pages/1365638" title="05. &#50529;&#49496;&#52968;&#53944;&#47204;&#47084;" class="wiki"&gt;05. &#50529;&#49496;&#52968;&#53944;&#47204;&#47084;&lt;/a&gt; &#47560;&#52452;&#49845;&#45768;&#45796;.- humbroll&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&#49688;&#44256;&#54616;&#49512;&#49845;&#45768;&#45796;. &#51228;&#44032; &#51312;&#44552; &#49688;&#51221;&#54644;&#48372;&#50520;&#49845;&#45768;&#45796; - deepblue&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&#51687;&#51008; &#52309;&#53552; &#54616;&#45208; ( &lt;a href="/pages/1365666" class="wiki" title="12. &#49688;&#51221;&#46108; &#48260;&#44536;"&gt;12. &#49688;&#51221;&#46108; &#48260;&#44536;&lt;/a&gt; ) &#49884;&#51089;&#54633;&#45768;&#45796; - allieus&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;allieus&#45784; &#54872;&#50689;&#54644;&#50836; ^^ - deepblue&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&#48264;&#50669;&#51060; &#50612;&#45580;&#54633;&#45768;&#45796;. &#45712;&#47532;&#51648;&#47564; &#52380;&#52380;&#55176; &#48264;&#50669;&#54644;&#48372;&#46020;&#47197; &#54616;&#44192;&#49845;&#45768;&#45796;. &#44048;&#49324;&#54633;&#45768;&#45796;. :) - allieus&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&#45796;&#44057;&#51060; &#55192;&#51012; &#47784;&#51004;&#47732;, &#51096; &#46112;&#44732;&#50696;&#50836;~ &#54868;&#51060;&#54021;! - deepblue&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&#51687;&#51008; &#52309;&#53552;&#46308;(9, 10,11) &#47560;&#52452;&#49845;&#45768;&#45796; - deepblue&lt;/li&gt;
&lt;li&gt;&lt;a href="/pages/1365634" class="wiki" title="03. &#50529;&#54000;&#48652;&#47532;&#49548;&#49828;"&gt;03. &#50529;&#54000;&#48652;&#47532;&#49548;&#49828;&lt;/a&gt; &#48264;&#50669; &#47560;&#52452;&#49845;&#45768;&#45796; - deepblue&lt;/li&gt;
&lt;li&gt;&lt;a href="/pages/1365634" class="wiki" title="03. &#50529;&#54000;&#48652;&#47532;&#49548;&#49828;"&gt;03. &#50529;&#54000;&#48652;&#47532;&#49548;&#49828;&lt;/a&gt; &#48264;&#50669;&#54633;&#45768;&#45796;. - deepblue&lt;/li&gt;
&lt;li&gt;&lt;a href="/pages/1364624" class="wiki" title="00. &#49548;&#44060;"&gt;00. &#49548;&#44060;&lt;/a&gt; &#48264;&#50669; &#47560;&#52452;&#49845;&#45768;&#45796; - deepblue&lt;/li&gt;
&lt;li&gt;&lt;a href="/pages/1364624" class="wiki" title="00. &#49548;&#44060;"&gt;00.&#49548;&#44060;&lt;/a&gt; &#48264;&#50669;&#54633;&#45768;&#45796;. - deepblue&lt;/li&gt;
&lt;/ul&gt;
</description>
      <pubDate>Tue, 24 Jun 2008 21:28:39 +0900</pubDate>
      <link>http://rails21-book.springnote.com/pages/1365694</link>
      <guid>http://rails21-book.springnote.com/pages/1365694</guid>
    </item>
    <item>
      <title>04. &#50529;&#49496;&#54057;</title>
      <description>&lt;h1&gt;&#50529;&#49496;&#54057;&lt;/h1&gt;
&lt;p&gt;&#50529;&#49496;&#48624; (HTML, XML, JavaScript &#46321;&#44284; &#44057;&#51060; &#52572;&#51333; &#49324;&#50857;&#51088;&#50640;&#44172; &#48372;&#50668;&#51656; &#48708;&#51452;&#50620;&#51012; &#49373;&#49457;)&amp;nbsp;&#50752; &#50529;&#49496;&#52968;&#53944;&#47204;&#47084; (&#48708;&#51592;&#45768;&#49828; &#54540;&#47196;&#50864; &#52968;&#53944;&#47204;)&#47196; &#44396;&#49457;&#46108;&#45796;. (&#52636;&#52376;: &#50948;&#53412;&#54588;&#46356;&#50500;)&lt;/p&gt;
&lt;h2&gt;&#53440;&#51076;&#51316;&lt;/h2&gt;
&lt;h3&gt;&#53440;&#51076;&#51316; &#44592;&#48376;&#44050; &#51221;&#51032;&#54616;&#44592;&lt;/h3&gt;
&lt;p&gt;&#49352;&#47196;&#52628;&#44032;&#46108; &#50741;&#49496; &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;time_zone_select&lt;/span&gt; &#47700;&#49548;&#46300;&#47196; &#49324;&#50857;&#51088;&#44032; &#50612;&#46496;&#54620; &#53440;&#51076;&#51316;&#46020; &#49440;&#53469;&#54616;&#51648; &#50506;&#51008; &#44221;&#50864; &#46608;&#45716; &#45936;&#51060;&#53440;&#48288;&#51060;&#49828; &#52972;&#47100;&#51060; null &#51068; &#46412;&#50640;&#46020; &#44592;&#48376;&#44050;&#51004;&#47196; &#51228;&#44277;&#54624; &#49688; &#51080;&#45796;. &#51060;&#47111;&#44172; &#54616;&#44592; &#50948;&#54644;&#49436; :default &#50741;&#49496;&#51012; &#50024;&#49436; &#45796;&#51020;&#44284; &#44057;&#51060; &#49324;&#50857;&#54624; &#49688; &#51080;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;time_zone_select("user", "time_zone", nil, :include_blank =&amp;gt; true)&lt;br /&gt;
&lt;br /&gt;
time_zone_select("user", "time_zone", nil,&lt;br /&gt;
:default =&amp;gt; "Pacific Time (US &amp;amp; Canada)" )&lt;br /&gt;
&lt;br /&gt;
time_zone_select( "user", 'time_zone', TimeZone.us_zones,&lt;br /&gt;
:default =&amp;gt; "Pacific Time (US &amp;amp; Canada)")&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;:default &#50741;&#49496;&#51012; &#49324;&#50857;&#54620; &#50696;&#50640;&#49436; &#48372;&#51060;&#45716; &#44163; &#52376;&#47100; &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;TimeZone&lt;/span&gt;&#51060; &#51060;&#48120; &#49440;&#53469;&#46104;&#50612;&#51652; &#44163;&#51012; &#48380; &#49688; &#51080;&#45796;.&lt;/p&gt;
&lt;h3&gt;formatted_offset &#47700;&#49548;&#46300;&lt;/h3&gt;
&lt;p&gt;formatted_offset &#47700;&#49548;&#46300;&#45716; UTC &#49884;&#44036;&#51032; &#54200;&#52264;&#44050;&#51004;&#47196; &#46108; +HH:MM &#54252;&#47719;&#51012; &#47532;&#53556;&#54616;&#44592; &#50948;&#54620; Time &#44284; DateTime &#53364;&#47000;&#49828;&#47484; &#54252;&#54632;&#54616;&#44256; &#51080;&#45796;. &#50696;&#47484; &#46308;&#47732; &#50864;&#47532; &#53440;&#51076;&#51316;(&#48652;&#46972;&#51656;&#47532;&#50500; &#53440;&#51076;)&#50640;&#49436; &#51060; &#47700;&#49548;&#46300;&#50640; &#51032;&#54644;&#49436; &#47532;&#53556;&#46104;&#45716; &#54200;&#52264;&#44050;&#51008; "-03:00" &#51032; &#49828;&#53944;&#47553; &#44050;&#51060; &#46112; &#44163;&#51060;&#45796;.&lt;/p&gt;
&lt;p&gt;&#50696;&#47484; &#48372;&#51088;:&lt;/p&gt;
&lt;p&gt;DateTime &#51004;&#47196; &#48512;&#53552; &#50619;&#50612;&#51648;&#45716; &#54200;&#52264;&#44050;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;datetime = DateTime.civil(2000, 1, 1, 0, 0, 0, Rational(-6, 24))&lt;br /&gt;
datetime.formatted_offset # =&amp;gt; "-06:00&#8243;&lt;br /&gt;
datetime.formatted_offset(false) # =&amp;gt; "-0600&#8243;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Time &#51004;&#47196; &#48512;&#53552; &#50619;&#50612;&#51648;&#45716; &#44050;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;Time.local(2000).formatted_offset # =&amp;gt; "-06:00&#8243;&lt;br /&gt;
Time.local(2000).formatted_offset(false) # =&amp;gt; "-0600&#8243;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#51060; &#47700;&#49548;&#46300;&#45716; &#54252;&#47719;&#46108; &#54805;&#53468;&#51060;&#44144;&#45208; &#54028;&#46972;&#48120;&#53552;&#47196; &#51452;&#50612;&#51652; &#44050;&#50640; &#51032;&#51316;&#54616;&#51648; &#50506;&#45716; &#49828;&#53944;&#47553;&#51012; &#47532;&#53556;&#54620;&#45796;&#45716; &#44163;&#51012; &#51452;&#51032;&#54616;&#46972;.&lt;/p&gt;
&lt;h3&gt;with_env_tz &#47700;&#49548;&#46300;&lt;/h3&gt;
&lt;p&gt;with_env_tz &#47700;&#49548;&#46300;&#45716; &#50500;&#51452; &#44036;&#45800;&#54620; &#54805;&#53468;&#47196; &#49436;&#47196;&#45796;&#47480; &#53440;&#51076;&#51316;&#51012; &#53580;&#49828;&#53944;&#54624; &#49688; &#51080;&#44172; &#54644;&#51456;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;def test_local_offset&lt;br /&gt;
with_env_tz 'US/Eastern' do&lt;br /&gt;
assert_equal Rational(-5, 24), DateTime.local_offset&lt;br /&gt;
end&lt;br /&gt;
with_env_tz 'US/Central' do&lt;br /&gt;
assert_equal Rational(-6, 24), DateTime.local_offset&lt;br /&gt;
end&lt;br /&gt;
end&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#51060; &#54764;&#54140; &#47700;&#49548;&#46300;&#45716; with_timezone &#51012; &#54840;&#52636;&#54616;&#44592; &#50948;&#54620; &#44144;&#46972; &#49373;&#44033;&#54616;&#51648;&#47564; &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;ENV['TZ']&lt;/span&gt;&#47484; &#49324;&#50857;&#54644;&#49436; &#50619;&#50612;&#51648;&#45716; &#53440;&#51076;&#51316;&#44284; Time.zone &#51032;&amp;nbsp;&#54844;&#46976;&#51012; &#54588;&#54616;&#44592; &#50948;&#54644;&#49436; with_env_tz &#47196; &#47532;&#45348;&#51076; &#46104;&#50632;&#45796;.&lt;/p&gt;
&lt;h3&gt;Time.zone_reset!&lt;/h3&gt;
&lt;p&gt;&#49325;&#51228;&#46104;&#50612;&#49436; &#45908;&#51060;&#49345; &#49324;&#50857;&#46104;&#51648; &#50506;&#51020;.&lt;/p&gt;
&lt;h3&gt;Time#in_current_time_zone&lt;/h3&gt;
&lt;p&gt;Time.zone &#51060; null &#51064; &#44221;&#50864; &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;self&lt;/span&gt; &#47484; &#47532;&#53556;&#54616;&#46020;&#47197; &#49688;&#51221;&#46120;.&lt;/p&gt;
&lt;h3&gt;Time#change_time_zone_to_current&lt;/h3&gt;
&lt;p&gt;Time.zone &#51060; null &#51064; &#44221;&#50864; self &#47484; &#47532;&#53556;&#54616;&#46020;&#47197; &#49688;&#51221;&#46120;.&lt;/p&gt;
&lt;h3&gt;TimeZone#now&lt;/h3&gt;
&lt;p&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;TimeZone#now&lt;/span&gt; &#47700;&#49548;&#46300;&#45716; Time.zone &#50640; &#51221;&#51032;&#46108; &#54788;&#51116; &#53440;&#51076;&#51316; &#49444;&#51221;&#51012; &#45208;&#53440;&#45236;&#45716; ActiveSupport::TimeWithZone &#51012; &#47532;&#53556;&#54616;&#46020;&#47197; &#49688;&#51221;&#46120;. &#50696;&#47484; &#46308;&#47732;&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;Time.zone = 'Hawaii' # =&amp;gt; "Hawaii"&lt;br /&gt;
Time.zone.now # =&amp;gt; Wed, 23 Jan 2008 20:24:27 HST -10:00&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Compare_with_coercion&lt;/h3&gt;
&lt;p&gt;compare_with_coercion (&#51068;&#47749; : &amp;lt;=&amp;gt;) &#47700;&#49548;&#46300;&#45716; Time&#44284; DateTime &#53364;&#47000;&#49828;&#50640;&#49436; &#49373;&#49457;&#46104;&#50632;&#45796;. &#51060; &#53364;&#47000;&#49828;&#45716; Time, DateTime &#53364;&#47000;&#49828;&#50752; ActiveSupport::TimeWithZone &#50724;&#48652;&#51229;&#53944; &#51064;&#49828;&#53556;&#49828; &#44036; &#50672;&#45824;&#49692; &#48708;&#44368;&#47196; &#47564;&#46308; &#49688; &#51080;&#44172;&#46108;&#45796;. &#51328;&#45908; &#49772;&#50868; &#49444;&#47749;&#51012; &#50948;&#54644; &#50500;&#47000; &#50696;&#47484; &#48372;&#51088; (&#44033; &#46972;&#51064;&#51032; &#44208;&#44284;&#45716; &#53076;&#46300; &#45149;&#50640; &#50948;&#52824;&#54620; &#52964;&#47592;&#53944;&#47196; &#45208;&#50752;&#51080;&#45796;)&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;Time.utc(2000) &amp;lt;=&amp;gt; Time.utc(1999, 12, 31, 23, 59, 59, 999) # 1&lt;br /&gt;
Time.utc(2000) &amp;lt;=&amp;gt; Time.utc(2000, 1, 1, 0, 0, 0) # 0&lt;br /&gt;
Time.utc(2000) &amp;lt;=&amp;gt; Time.utc(2000, 1, 1, 0, 0, 0, 001)) # -1&lt;br /&gt;
&lt;br /&gt;
Time.utc(2000) &amp;lt;=&amp;gt; DateTime.civil(1999, 12, 31, 23, 59, 59) # 1&lt;br /&gt;
Time.utc(2000) &amp;lt;=&amp;gt; DateTime.civil(2000, 1, 1, 0, 0, 0) # 0&lt;br /&gt;
Time.utc(2000) &amp;lt;=&amp;gt; DateTime.civil(2000, 1, 1, 0, 0, 1)) # -1&lt;br /&gt;
&lt;br /&gt;
Time.utc(2000) &amp;lt;=&amp;gt; ActiveSupport::TimeWithZone.new(Time.utc(1999, 12, 31, 23, 59, 59) )&lt;br /&gt;
Time.utc(2000) &amp;lt;=&amp;gt; ActiveSupport::TimeWithZone.new(Time.utc(2000, 1, 1, 0, 0, 0) )&lt;br /&gt;
Time.utc(2000) &amp;lt;=&amp;gt; ActiveSupport::TimeWithZone.new(Time.utc(2000, 1, 1, 0, 0, 1) ))&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;TimeWithZone#between?&lt;/h3&gt;
&lt;p&gt;between? &#47700;&#49548;&#46300;&#45716;&amp;nbsp;&#51064;&#49828;&#53556;&#49828;&#44032; &#46160; &#45216;&#51676;&#49324;&#51060;&#50640; &#51316;&#51116;&#54616;&#45716;&#51648; &#44160;&#51613;&#54616;&#44592; &#50948;&#54620; TimeWithZone &#53364;&#47000;&#49828;&#50640; &#54252;&#54632;&#46104;&#50612; &#51080;&#45796;.&lt;/p&gt;
&lt;p&gt;&#50696;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;@twz.between?(Time.utc(1999,12,31,23,59,59),&lt;br /&gt;
Time.utc(2000,1,1,0,0,1))&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;TimeZone#parse&lt;/h3&gt;
&lt;p&gt;&#51060; &#47700;&#49548;&#46300;&#45716; &#49828;&#53944;&#47553;&#51004;&#47196;&#48512;&#53552; ActiveSupport::TimeWIthZone &#51032; &#49352; &#51064;&#49828;&#53556;&#49828;&#47484; &#49373;&#49457;&#54620;&#45796;.&lt;/p&gt;
&lt;p&gt;&#50696;&#47484; &#46308;&#47732;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;Time.zone = "Hawaii"&lt;br /&gt;
# =&amp;gt; "Hawaii"&lt;br /&gt;
Time.zone.parse('1999-12-31 14:00:00')&lt;br /&gt;
# =&amp;gt; Fri, 31 Dec 1999 14:00:00 HST -10:00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Time.zone.now&lt;br /&gt;
# =&amp;gt; Fri, 31 Dec 1999 14:00:00 HST -10:00&lt;br /&gt;
Time.zone.parse('22:30:00')&lt;br /&gt;
# =&amp;gt; Fri, 31 Dec 1999 22:30:00 HST -10:00&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;TimeZone#at&lt;/h3&gt;
&lt;p&gt;&#51060; &#47700;&#49548;&#46300;&#45716; Unix &#50640;&#49436; &#49324;&#50857;&#46104;&#45716; &#52488;&#51032; &#44050;&#51004;&#47196; &#48512;&#53552; ActiveSupport::TimeWIthZone &#51032; &#51064;&#49828;&#53556;&#49828;&#47484; &#49373;&#49457;&#54616;&#45716;&#45936; &#49324;&#50857;&#46112; &#49688; &#51080;&#45796;.&lt;/p&gt;
&lt;p&gt;&#50696;&#47484; &#46308;&#47732;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;Time.zone = "Hawaii" # =&amp;gt; "Hawaii"&lt;br /&gt;
Time.utc(2000).to_f # =&amp;gt; 946684800.0&lt;br /&gt;
&lt;br /&gt;
Time.zone.at(946684800.0)&lt;br /&gt;
# =&amp;gt; Fri, 31 Dec 1999 14:00:00 HST -10:00&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;&#45908; &#47566;&#51008; &#47700;&#49548;&#46300;&#46308;&lt;/h3&gt;
&lt;p&gt;to_a, &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;to_f&lt;/span&gt;, to_i, &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;httpdate&lt;/span&gt;, rfc2822, &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;to_yaml&lt;/span&gt;, to_datetime, &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;eql?&lt;/span&gt; &#47700;&#49548;&#46300;&#45716; TimeWithZone &#53364;&#47000;&#49828;&#50640; &#52628;&#44032;&#46104;&#50632;&#45796;. &#51060; &#47700;&#49548;&#46300;&#50640; &#45824;&#54620; &#52628;&#44032; &#51221;&#48372;&#45716; Rails &#47928;&#49436;&#47484; &#52280;&#44256;&#54616;&#46972;.&lt;/p&gt;
&lt;h3&gt;&#47336;&#48708; 1.9&#47484; &#50948;&#54644; &#51456;&#48708;&#54616;&#45716; TimeWithZone &#53364;&#47000;&#49828;&lt;/h3&gt;
&lt;p&gt;&#47336;&#48708; 1.9 &#50640;&#45716; Time &#53364;&#47000;&#49828;&#50640;&#45716; &#45796;&#51020;&#44284; &#44057;&#51008; &#49352;&#47196;&#50868; &#47700;&#49548;&#46300;&#46308;&#51060; &#52628;&#44032;&#46108;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;Time.now&lt;br /&gt;
# =&amp;gt; Thu Nov 03 18:58:25 CET 2005&lt;br /&gt;
&lt;br /&gt;
Time.now.sunday?&lt;br /&gt;
# =&amp;gt; false&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#50836;&#51068;&#51012; &#45208;&#53440;&#45236;&#45716; &#44033;&#44033;&#51032; &#47700;&#49548;&#46300;&#44032; &#51316;&#51116;&#54620;&#45796;.&lt;/p&gt;
&lt;p&gt;&#55141;&#48120;&#47196;&#50868; &#44163;&#51008; Time &#50724;&#48652;&#51229;&#53944;&#51032; to_s &#47700;&#49548;&#46300;&#44032; &#45796;&#47480; &#47532;&#53556; &#44050;&#51012; &#44032;&#51652;&#45796;&#45716; &#44163;&#51060;&#45796;. Time.new.to_s &#44032; &#49892;&#54665;&#46112;&#46412; Today &#45716; &#45796;&#51020;&#44284; &#44057;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;Time.new.to_s&lt;br /&gt;
# =&amp;gt; "Thu Oct 12 10:39:27 +0200 2006&#8243;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#47336;&#48708; 1.9 &#50640;&#49436;&#45716;&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;Time.new.to_s&lt;br /&gt;
# =&amp;gt; "2006-10-12 10:39:24 +0200&#8243;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#47112;&#51068;&#49828; 2.1 &#50640;&#49436; &#54644;&#50556;&#47564; &#54616;&#45716; &#44163;&#51008; &#47924;&#50632;&#51064;&#44032;? &#47784;&#46304;&#44163;&#51060;&#45796;.&amp;nbsp;&#47112;&#51068;&#49828;&#45716; &#51060;&#47088; &#49688;&#51221;&#49324;&#54637;&#46308;&#51012; &#45796;&#47344; &#51456;&#48708;&#44032; &#46104;&#50612;&#51080;&#45796;.&amp;nbsp;&#50696;&#47484; &#46308;&#47732; TimeWithZone &#53364;&#47000;&#49828;&#45716; &#52395;&#48264;&#51704; &#50696;&#51228;&#51032; &#47700;&#49548;&#46300;&#50752; &#44057;&#51060;&amp;nbsp;&#46041;&#51089;&#54616;&#44592; &#50948;&#54644;&#49436;&amp;nbsp;&#44060;&#49440;&#49324;&#54637;&#51012;&amp;nbsp;&#49688;&#50857;&#54664;&#45796;.&lt;/p&gt;
&lt;h2&gt;&#50724;&#53664;&#47553;&#53356;&lt;/h2&gt;
&lt;p&gt;auto_link &#47700;&#49548;&#46300;&#45716; &#54028;&#46972;&#48120;&#53552;&#47196; &#51452;&#50612;&#51652; &#50612;&#46496;&#54620; &#53581;&#49828;&#53944;&#46972;&#46020; &#49688;&#50857;&#54620;&#45796;. &#47564;&#50557; &#53581;&#49828;&#53944;&#44032; &#51060;&#47700;&#51068;&#51060;&#45208; &#50937;&#49324;&#51060;&#53944; &#51452;&#49548;&#46972;&#46020; &#46041;&#51068;&#54620; &#54616;&#51060;&#54140;&#47553;&#53356;&#47196;&#46108; &#53581;&#49828;&#53944;&#47484; &#47532;&#53556;&#54620;&#45796;.&lt;/p&gt;
&lt;p&gt;&#50696;&#47484; &#46308;&#47732;&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;auto_link("Go to this website now: http://www.rubyonrails.com")&lt;br /&gt;
# =&amp;gt; Go to this website now: http://www.rubyonrails.com&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#50500;&#47560;&#51316; &#44057;&#51008; &#49324;&#51060;&#53944;&#45716; "=" &#49900;&#48380;&#51012; URL&#51032; &#51068;&#48512;&#47196; &#49324;&#50857;&#54620;&#45796;. &#51060; &#47700;&#49548;&#46300;&#45716; &#51060;&#47084;&#54620; &#49900;&#48380;&#51012; &#51064;&#49885;&#54616;&#51648; &#50506;&#45716;&#45796;. &#51060;&#47088; &#44221;&#50864; &#47700;&#49548;&#46300;&#44032; &#50612;&#46523;&#44172; &#46041;&#51089;&#54616;&#45716;&#51648; &#48372;&#46972;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;auto_link("http://www.amazon.com/Testing/ref=pd_bbs_sr_1")&lt;br /&gt;
# =&amp;gt; http://www.amazon.com/Testing/ref&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#47700;&#49548;&#46300;&#44032; &#54616;&#51060;&#54140;&#47553;&#53356;&#47484; &#51221;&#54869;&#54616;&#44172;&amp;nbsp; "="&amp;nbsp; &#49900;&#48380; &#50526;&#50640;&#49436; &#45149;&#45212; &#44163;&#50640; &#51452;&#51032;&#54616;&#46972;, &#47112;&#51068;&#49828; 2.1 &#51060;&#51204;&#50640;&#45716; &#51060;&#47088; &#49900;&#48380;&#51008; &#51648;&#50896;&#46104;&#51648; &#50506;&#50520;&#45796;.&lt;/p&gt;
&lt;p&gt;&#44057;&#51008; &#47700;&#49548;&#46300;&#44032; &#45208;&#51473;&#50640; URL&#50640; &#44292;&#54840;&#44032; &#51080;&#45716; &#44163;&#51012; &#49324;&#50857;&#54624; &#49688; &#51080;&#46020;&#47197; &#50629;&#45936;&#51060;&#53944; &#46104;&#50632;&#45796;.&lt;/p&gt;
&lt;p&gt;&#44292;&#54840;&#44032; &#51080;&#45716; URL &#50696;&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;http://en.wikipedia.org/wiki/Sprite_(computer_graphics)&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;&#47112;&#51060;&#48660;&lt;/h2&gt;
&lt;p&gt;&#49828;&#52880;&#54260;&#46300;&#47484; &#49324;&#50857;&#54644;&#49436; &#49352;&#47196;&#50868; &#54268;&#51012; &#49373;&#49457;&#54616;&#47732; &#45796;&#51020;&#44284; &#44057;&#51008; &#53076;&#46300;&#44032; &#49373;&#49457;&#46112; &#44163;&#51060;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;&amp;lt;% form_for(@post) do |f| %&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;%= f.label :title %&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;%= f.text_field :title %&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;%= f.label :body %&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;%= f.text_area :body %&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;%= f.submit "Update" %&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;lable &#47700;&#49548;&#46300;&#44032; &#54252;&#54632;&#46104;&#50632;&#45796;. &#51060; &#47700;&#49548;&#46300;&#45716; HTML &#53468;&#44536;&#50640; &#52972;&#47100; &#53440;&#51060;&#53952;&#51012; &#44032;&#51652; &#49828;&#53944;&#47553;&#51012; &#47532;&#53556;&#54620;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;&amp;gt;&amp;gt; f.label :title&lt;br /&gt;
=&amp;gt; &amp;lt;label for="post_title"&amp;gt;Title&amp;lt;/label&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; f.label :title, "A short title"&lt;br /&gt;
=&amp;gt; &amp;lt;label for="post_title"&amp;gt;A short title&amp;lt;/label&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; label :title, "A short title", :class =&amp;gt; "title_label"&lt;br /&gt;
=&amp;gt; &amp;lt;label for="post_title" class="title_label"&amp;gt;A short title&amp;lt;/label&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#53468;&#44536;&#50640; &#51080;&#45716; &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;for&lt;/span&gt; &#54028;&#46972;&#48120;&#53552;&#44032; &#48372;&#51060;&#45716;&#44032;? "post_title" &#51008; &#54252;&#49828;&#53944; &#53440;&#51060;&#53952;&#51012; &#45812;&#44256; &#51080;&#45716; &#53581;&#49828;&#53944; &#48149;&#49828; &#53440;&#51060;&#53952;&#51060;&#45796;.&amp;nbsp;\ &#53468;&#44536;&#45716; &#49324;&#49892; post_title &#50724;&#48652;&#51229;&#53944;&#50752; &#50672;&#44208;&#46108; &#47112;&#51060;&#48660;&#51060;&#45796;. &#45572;&#44400;&#44032; &#51060; &#47112;&#51060;&#48660; (&#47553;&#53356;&#44032;&#50500;&#45784;)&#51012; &#53364;&#47533;&#54624; &#46412; &#50672;&#44208;&#46108; HTML &#52968;&#53944;&#47204;&#47084;&#44032; &#54252;&#52964;&#49828;&#47484; &#48155;&#44172;&#46108;&#45796;.&lt;/p&gt;
&lt;p&gt;Robby Russell &#51008; &#51060; &#51452;&#51228;&#50640; &#44288;&#54620; &#55141;&#48120;&#47196;&#51008; &#54252;&#49828;&#54021;&#51012; &#44536;&#51032; &#48660;&#47196;&#44536;&#50640; &#50044;&#45796;. &#50668;&#44592;&#49436; &#51069;&#51012; &#49688; &#51080;&#45796;. &lt;a href="http://www.robbyonrails.com/articles/2007/12/02/that-checkbox-needs-a-label"&gt;http://www.robbyonrails.com/articles/2007/12/02/that-checkbox-needs-a-label&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&#46608;&#54620; &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;FormTagHelper&lt;/span&gt; &#50640; lable_tag &#47700;&#49548;&#46300;&#44032; &#54252;&#54632;&#46104;&#50612;&#51080;&#45796;. &#51060; &#47700;&#49548;&#46300;&#45716; &#47112;&#51060;&#48660; &#52376;&#47100; &#54616;&#51648;&#47564; &#51328; &#45908; &#49900;&#54540;&#54620; &#48169;&#49885;&#51004;&#47196; &#46041;&#51089;&#54620;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;&amp;gt;&amp;gt; label_tag 'name'&lt;br /&gt;
=&amp;gt; &amp;lt;label for="name"&amp;gt;Name&amp;lt;/label&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; label_tag 'name', 'Your name'&lt;br /&gt;
=&amp;gt; &amp;lt;label for="name"&amp;gt;Your name&amp;lt;/label&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; label_tag 'name', nil, :class =&amp;gt; 'small_label'&lt;br /&gt;
=&amp;gt; &amp;lt;label for="name" class="small_label"&amp;gt;Name&amp;lt;/label&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#51060; &#47700;&#49548;&#46300;&#45716; &#46608;&#54620; :for &#50741;&#49496;&#51012; &#49688;&#50857;&#54620;&#45796;. &#50696;&#47484; &#48372;&#51088;&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;label(:post, :title, nil, :for =&amp;gt; "my_for")&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#51060;&#44163;&#51008; &#45796;&#51020;&#44284; &#44057;&#51060; &#47532;&#53556;&#46112; &#44163;&#51060;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;&amp;lt;label for="my_for"&amp;gt;Title&amp;lt;/label&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;&#54028;&#49500;&#51032; &#49352;&#47196;&#50868; &#49324;&#50857;&#48277;&lt;/h2&gt;
&lt;p&gt;&#47112;&#51068;&#49828;&#47196; &#49548;&#54532;&#53944;&#50920;&#50612; &#44060;&#48156;&#49884;&#50640; &#54028;&#49500;&#51012; &#49324;&#50857;&#54644;&#49436; &#53076;&#46300;&#51032; &#51473;&#48373;&#51012; &#54588;&#54616;&#45716; &#44163;&#51008; &#47588;&#50864; &#51068;&#48152;&#51201;&#51060;&#45796;. &#50668;&#44592; &#50696;&#51228;&#44032; &#51080;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;&amp;lt;% form_for :user, :url =&amp;gt; users_path do %&amp;gt;&lt;br /&gt;
&amp;lt;%= render :partial =&amp;gt; 'form' %&amp;gt;&lt;br /&gt;
&amp;lt;%= submit_tag 'Create' %&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#54028;&#49500;&#51008; &#53076;&#46300; &#51312;&#44033; (&#53596;&#54540;&#47551;) &#51060;&#45796;. &#54028;&#49500; &#49324;&#50857;&#51032; &#51109;&#51216;&#51008; &#48520;&#54596;&#50836;&#54620; &#53076;&#46300; &#51473;&#48373;&#51012; &#54588;&#54616;&#45716; &#44163;&#51060;&#45796;. &#54028;&#49500;&#51032; &#49324;&#50857;&#51008; &#47588;&#50864; &#44036;&#45800;&#54616;&#45796;. render partial =&amp;gt; "name" &#44284; &#44057;&#51060; &#49884;&#51089;&#54624; &#49688; &#51080;&#45796;. &#44057;&#51008; &#51060;&#47492;&#51004;&#47196;&#46108; &#54028;&#49500; &#54028;&#51068;&#51012; &#49373;&#49457;&#54644;&#50556;&#47564; &#54616;&#47728; &#50526;&#50640; &#50616;&#45908;&#46972;&#51064;&#51012; &#48537;&#50668;&#50556; &#54620;&#45796;.&lt;/p&gt;
&lt;p&gt;&#50948;&#50640; &#48372;&#51060;&#45716; &#53076;&#46300;&#45716; &#50612;&#46523;&#44172; &#54616;&#45716;&#51648; &#48372;&#50668;&#51456;&#45796;. &#47112;&#51068;&#49828; 2.1 &#50640;&#49436;&#45716; &#50557;&#44036; &#45796;&#47480; &#48169;&#48277;&#51004;&#47196; &#44057;&#51008; &#44163;&#51012; &#54616;&#44172; &#46108;&#45796;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;&amp;lt;% form_for(@user) do |f| %&amp;gt;&lt;br /&gt;
&amp;lt;%= render :partial =&amp;gt; f %&amp;gt;&lt;br /&gt;
&amp;lt;%= submit_tag 'Create' %&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&#51060; &#50696;&#50640;&#49436;&#45716; &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;FormBuilder&lt;/span&gt; &#50640; &#51032;&#54644;&#49436; &#49373;&#49457;&#46108; "form" &#51060;&#46972;&#45716; &#47112;&#54140;&#47088;&#49828; &#48320;&#49688;&#47484; &#48155;&#50500; "users/_form" &#54028;&#49500;&#51012; &#47004;&#45908;&#47553; &#54620;&#45796;&lt;/p&gt;
&lt;p&gt;&#51060;&#51204; &#48169;&#49885;&#46020; &#47112;&#51068;&#49828; 2.1 &#50640;&#49436; &#50668;&#51204;&#55176; &#46041;&#51089;&#54620;&#45796;.&lt;/p&gt;
&lt;h2&gt;Atom &#54588;&#46300;&#51032; &#49352; &#45348;&#51076;&#49828;&#54168;&#51060;&#49828;&lt;/h2&gt;
&lt;p&gt;atom_feed &#47700;&#49548;&#46300;&#47484; &#50500;&#45716;&#44032;? &#51060;&#44163;&#51008; Atom &#54588;&#46300;&#47484; &#49789;&#44172; &#47564;&#46308;&#44172; &#54644;&#51452;&#45716; &#47112;&#51068;&#49828; 2.0 &#51032; &#49352; &#44592;&#45733;&#51473; &#54616;&#45208;&#51060;&#45796;.&lt;/p&gt;
&lt;p&gt;&#49324;&#50857; &#50696;&#47484; &#48372;&#51088;.&lt;/p&gt;
&lt;p&gt;index.atom.builder &#54028;&#51068;&#50640;&#49436;.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;atom_feed do |feed|&lt;br /&gt;
feed.title("Nome do Jogo")&lt;br /&gt;
feed.updated((@posts.first.created_at))&lt;br /&gt;
&lt;br /&gt;
for post in @posts&lt;br /&gt;
feed.entry(post) do |entr