Has anyone attempted a model design that incorporates both versioning and scheduling of model changes?
As an example implementation:
Each model version has a publish_on and expire_on date, the latest version that should be live, is presented.
id content_id version publish_on expire_on content
1 1 v1 1/2/2013 nil foo
2 1 v2 1/4/2013 1/7/2013 bar
On 1/1, there’s nothing published/
1/2 to 1/3, version 1 is live, content = foo
1/4 to 1/6, version 2 is live, content = bar
on 1/7, back to version 1, content = foo
This would handle: the idea of promotions, scheduled changes, old content removal, and provide an audit view of old versions (similar to the idea, but not structure of papertrail).
I would rather not reinvent the wheel here, but I am definitely open to suggestions / thoughts.
Thanks in advance.