Rails Apps that need to present different versions of model schemas

I’m writing a Rails3 app that collects data as defined by an external source. At periodic intervals, the external source will update their data definitions and require a different schema to be presented to the end-users.

My end users will be at different versions of the external data schema and have legacy data that needs to remain available when they upgrade to the new schema.

The external schema changes are thoughtful and can be layered into the database (ie, they are not repurposing a field, but a field might be abandoned in place and future data moved to a new field).

I don’t think this the problem addressed by model versioning like vestal_versions.

My thoughts on this process is to use a flag to indicate which version the user wants to see and then check the flag when creating views to show or hide user elements that are required for the version of the schema that is required. Wondering if someone has a more elegant solution or experience with a similar situation and wants to share.

You might also consider a schemaless database, like MongoDB as the storage. Then you can make arbitrary changes without changing a schema at all.

--Michael