Model Versioning + Scheduling

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.