保持 ActiveRecord 模型变更的干净历史
最后, DRY ActiveRecord 版本管理功能终于出现了! technoweenie[http://github.com/technoweenie/acts_as_versioned] 的 acts_as_versioned[http://github.com/technoweenie] 是一个很好的开始,但它无法跟上 ActiveRecord 在 2.1 版中引入的脏对象。此外,每个版本化模型都需要自己的版本表,该表重复了原始表中的大部分列。版本表然后被填充了通常重复原始记录的大部分属性的记录。总而言之,这并不太 DRY。
vestal_versions[http://github.com/laserlemon/vestal_versions] 只需要一个版本表(与其父模型多态关联),而且不需要对现有表进行任何更改。但它更加干净,因为它只存储了模型的变化的序列化哈希值。想想现代的版本控制系统。通过遍历变化记录,模型可以恢复到任何时间点。
** 注意: 我正在为这个项目提供所需的支持,以便在 Rails 3 之后的世界中保持其相关性。我很快将完成一个支持 1.9.2+ 和 Rails 3.2+ 的版本,并推送该宝石,在此之前,请使用 git 仓库:
class User > u = User.create(:first_name => "Steve", :last_name => "Richert") => #
u.version => 1 u.update_attribute(:first_name, "Stephen") => true u.name " =>
暂无开放 Issues,或尚未同步最近议题。