In the olden days we would do this sort of thing with db triggers and a 
'journal' table--every UPDATE would result in a record_version field being 
incremented, and the pre-update version of the rec written out to a separate 
table.  You can also keep all record versions in one table & put up a view that 
selects out just the most recent, but that can be problematic perf-wise.  
(IIRC, chunks of SAP do the all-versions-in-one-table thing.)

Agree that an AR plugin should be able to handle the journaling--not sure if 
there is one that does.  I vaguely recall an 'acts as deleteable' or 'acts as 
archivable' plugin discussed here a while back that seems like similar 
functionality--not sure if it would get you all the way there.
________________________________
From: [email protected] 
[mailto:[email protected]] On Behalf Of Patrick Doyle
Sent: Monday, December 15, 2008 12:26 PM
To: [email protected]
Subject: [Rails] Re: Saving a "final" version of a record.

On Mon, Dec 15, 2008 at 1:13 AM, Michael Kahle 
<[email protected]<mailto:[email protected]>> 
wrote:

I'll start by apologizing for the title.  I can't think what to call
this.

I have some Claims that need to be entered, but when they are "closed"
it saves the data from other related tables into the Claim (this could
get messy), so that if the Customer, Registration, or Dealer information
is changed at a later date it will remain the same as when the Claim was
closed.

Is there a preferred method for doing this?  Some kind of plugin or
something?

I understand I could have a separate table for keeping the "archived"
version of the record, but I fear the work to create all new tables and
then storing the record as this other new archive type which is nothing
more than a duplicate of the Claim.

Any thoughts?

P.S. - Ask away, I am probably not explaining this perfectly, but I will
try to elaborate if you are having trouble understanding my challenge.
I wonder if you could implement a "copy-on-write" feature in the Customer, 
Registration, Dealer, etc... tables.  Basically, add a "freeze_record" boolean 
column to those tables and set that to "true" when you need to finalize one of 
those records.  If you ever want/need to update a frozen record, you could 
allocate a new one, scan all of the claims to which this record "belongs_to" 
and point all of those that are not closed to the new record.

This strikes me as an ideal candidate for some sort of plugin that mixes into 
ActiveRecord.  Unfortunately, I haven't the foggiest idea how to implement the 
practical side of this theoretical solution (yet... but I'm learning more every 
day).

--wpd




--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to