title: Preventing ActiveRecord save() on an instance
body: <p>I have an ActiveRecord model object <code>Foo</code>; it represents a standard database row.</p>
  
  <p>I want to be able to display modified versions of instances of this object. I'd like to reuse the class itself, as it already has all the hooks &amp; aspects I'll need. (For example: I already have a view that displays the appropriate attributes). Basically I want to clone the model instance, modify some of its properties, and feed it back to the caller (view, test, etc).</p>
  
  <p>I do <em>not</em> want these attribute modifications getting back into the database. However, I do want to include the <code>id</code> attribute in the cloned version, as it makes dealing with the route-helpers much easier. Thus, I plan on calling <code>ActiveRecord::Base.clone()</code>, manually setting the ID of the cloned instance, and then making the appropriate attribute changes to the new instance. This has me worried though; one <code>save()</code> on the modified instance and my original data will get clobbered.</p>
  
  <p>So, I'm looking to lock down the new instance so that it won't hurt anything else. I'm already planning on calling <code>freeze()</code> (on the understanding that this prevents further modification to the object, though the <a href="http://api.rubyonrails.org/classes/ActiveRecord/Base.html#M001873" rel="noreferrer">documentation isn't terribly clear</a>). However, I don't see any obvious way to prevent a save().</p>
  
  <p>What would be the best approach to achieving this?</p>