<?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>Module: ActiveRecord::Dirty</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" /> <script type="text/javascript"> // <![CDATA[ function popupCode( url ) { window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400") } function toggleCode( id ) { if ( document.getElementById ) elem = document.getElementById( id ); else if ( document.all ) elem = eval( "document.all." + id ); else return false; elemStyle = elem.style; if ( elemStyle.display != "block" ) { elemStyle.display = "block" } else { elemStyle.display = "none" } return true; } // Make codeblocks hidden by default document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" ) // ]]> </script> </head> <body> <div id="classHeader"> <table class="header-table"> <tr class="top-aligned-row"> <td><strong>Module</strong></td> <td class="class-name-in-header">ActiveRecord::Dirty</td> </tr> <tr class="top-aligned-row"> <td><strong>In:</strong></td> <td> <a href="../../files/lib/active_record/dirty_rb.html"> lib/active_record/dirty.rb </a> <br /> </td> </tr> </table> </div> <!-- banner header --> <div id="bodyContent"> <div id="contextContent"> <div id="description"> <p> Track unsaved attribute <a href="Dirty.html#M000379">changes</a>. </p> <p> A newly instantiated object is unchanged: </p> <pre> person = Person.find_by_name('uncle bob') person.changed? # => false </pre> <p> Change the name: </p> <pre> person.name = 'Bob' person.changed? # => true person.name_changed? # => true person.name_was # => 'uncle bob' person.name_change # => ['uncle bob', 'Bob'] person.name = 'Bill' person.name_change # => ['uncle bob', 'Bill'] </pre> <p> Save the <a href="Dirty.html#M000379">changes</a>: </p> <pre> person.save person.changed? # => false person.name_changed? # => false </pre> <p> Assigning the same value leaves the attribute unchanged: </p> <pre> person.name = 'Bill' person.name_changed? # => false person.name_change # => nil </pre> <p> Which attributes have <a href="Dirty.html#M000377">changed?</a> </p> <pre> person.name = 'bob' person.changed # => ['name'] person.changes # => { 'name' => ['Bill', 'bob'] } </pre> <p> Before modifying an attribute in-place: </p> <pre> person.name_will_change! person.name << 'by' person.name_change # => ['uncle bob', 'uncle bobby'] </pre> </div> </div> <div id="method-list"> <h3 class="section-bar">Methods</h3> <div class="name-list"> <a href="#M000378">changed</a> <a href="#M000377">changed?</a> <a href="#M000379">changes</a> <a href="#M000376">included</a> </div> </div> </div> <!-- if includes --> <div id="section"> <div id="class-list"> <h3 class="section-bar">Classes and Modules</h3> Module <a href="Dirty/ClassMethods.html" class="link">ActiveRecord::Dirty::ClassMethods</a><br /> </div> <div id="constants-list"> <h3 class="section-bar">Constants</h3> <div class="name-list"> <table summary="Constants"> <tr class="top-aligned-row context-row"> <td class="context-item-name">DIRTY_SUFFIXES</td> <td>=</td> <td class="context-item-value">['_changed?', '_change', '_will_change!', '_was']</td> </tr> </table> </div> </div> <!-- if method_list --> <div id="methods"> <h3 class="section-bar">Public Class methods</h3> <div id="method-M000376" class="method-detail"> <a name="M000376"></a> <div class="method-heading"> <a href="Dirty.src/M000376.html" target="Code" class="method-signature" onclick="popupCode('Dirty.src/M000376.html');return false;"> <span class="method-name">included</span><span class="method-args">(base)</span> </a> </div> <div class="method-description"> </div> </div> <h3 class="section-bar">Public Instance methods</h3> <div id="method-M000378" class="method-detail"> <a name="M000378"></a> <div class="method-heading"> <a href="Dirty.src/M000378.html" target="Code" class="method-signature" onclick="popupCode('Dirty.src/M000378.html');return false;"> <span class="method-name">changed</span><span class="method-args">()</span> </a> </div> <div class="method-description"> <p> List of attributes with unsaved <a href="Dirty.html#M000379">changes</a>. </p> <pre> person.changed # => [] person.name = 'bob' person.changed # => ['name'] </pre> </div> </div> <div id="method-M000377" class="method-detail"> <a name="M000377"></a> <div class="method-heading"> <a href="Dirty.src/M000377.html" target="Code" class="method-signature" onclick="popupCode('Dirty.src/M000377.html');return false;"> <span class="method-name">changed?</span><span class="method-args">()</span> </a> </div> <div class="method-description"> <p> Do any attributes have unsaved changes? </p> <pre> person.changed? # => false person.name = 'bob' person.changed? # => true </pre> </div> </div> <div id="method-M000379" class="method-detail"> <a name="M000379"></a> <div class="method-heading"> <a href="Dirty.src/M000379.html" target="Code" class="method-signature" onclick="popupCode('Dirty.src/M000379.html');return false;"> <span class="method-name">changes</span><span class="method-args">()</span> </a> </div> <div class="method-description"> <p> Map of <a href="Dirty.html#M000378">changed</a> attrs => [original value, new value]. </p> <pre> person.changes # => {} person.name = 'bob' person.changes # => { 'name' => ['bill', 'bob'] } </pre> </div> </div> </div> </div> <div id="validator-badges"> <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p> </div> </body> </html>