<p>I want to work with versioned ActiveRecord associations. <i>E.g.</i>, I want to find the object that another object belongs_to as of a certain past date, or the one that it belonged to before that. Does there already exist a library subclassing Rails' ActiveRecord to provide versioned relations? Or some other Ruby library which provides persistable versioned relations?</p>

Supporting historical state in a transactional application is a good way to massively expand complexity, slow DB performance and make life difficult for yourself.  If you only need to display or report on historical state and do not need it up to the minute consider building a star schema with
Type-II slowly changing dimensions
and  a periodic process that updates it.
This will be substantially less complex than building an application with systemic ad-hoc history tracking running through the code base.  If this approach will do what you require of the application you will probably be better off doing it.  It also means that the application database will play nicely with the vanilla database access mechanisms that come with the system.
If you need reasonably frequent refresh you can implement a changed-data capture system on the database, which is relatively simple if the application only has to be concerned with current state.  With a CDC mechanism the load process only has to update based on changes and will run relatively quickly.