Double data entry

Hi Tim,

First off, I have an interest in this sort of application myself.
Please contact me off-list if you would like additional help.

The proper way to do double entry rather depends on your workflow.
* Do you have the same person enter the data twice?
* Does the second entry happen at a different time, or do you want to
do it all in one form?

As a general rule, double entry makes for a bad user interface, but
there are times when it is necessary (password verifications show up a

In any event, one way to implement this would be through an 'edit' like

- record has been entered
- user invokes the 'verify' action on the record.
- 'verify' generates a blank form (much like a new item form) but
passes the id of the record in a hidden field
- on submission, load the original object in memory
- cycle through all the attributes of the record looking for
differences. Ignore at 'created_at' like attributes.
- If all the relevant columns pass, then update the 'verified_at' with
the timestamp of when it passed the test.
- If not, then assign the 'errors' for the record and re-render the
form with the discrepancies highlighted.


Just a thought, my acts_as_modified plugin may be of use to you when looking for differences between the records.

You could assign the new values to the original record then use record.modified_attributes see any differences.


The docs should be enough:

But just quickly, you can do:

@subject = Subject.find(params[:id])
@subject.attributes = { :name => “New name” }

@subject.modified_attributes # { :name => “Old name” }


@subject.original_name # “Old Name”

@subject.modified? # true

Feel free to email me off-list if you want more assistance with the plugin.