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