對於我正在處理的項目,我需要實現對象版本控制。不幸的是,我需要保留每個對象的完整歷史記錄,所以像Papertrail這樣的單一表格解決方案很快就會變得無法管理。有我喜歡的Papertrail的功能,但是,我無法在每個模型的單獨表格(例如acts_as_versioned)的解決方案中找到它。存儲從兩個控制器和模型 Rails中的對象版本控制,像Papertrail,但是各個表格
- 能力系列化所以模式更改不修改版本表
- 強大的方法用於遍歷版本
- 變化的責任 自動跟蹤
還有一些papertrail不具備的功能,這將是獎金:
- 內置版本DIFF支持
- 差,而不是完整版本
我目前正在考慮分叉Papertrail使用單獨的表各型號,但想保存精力,如果有一個現有的解決方案。
更新: 維斯塔版本默認使用一個表,而是通過爲每個模型的定製版本類和使用ActiveRecord的「set_table_name」的方法,我能夠爲每個模型創建單獨的表。 Vestal Versions也內置了差異支持,但它的界面並不像Papertrails那麼強大。它也缺乏協會支持。
更新2: 作爲papertrail似乎是一個更活躍的項目我已經分叉的寶石和定製類支持類似於維斯塔版本現在允許定義每個模型單獨的表的能力增加。我的叉子在這裏,但我希望它很快就會被引入到主要的項目倉庫中。 https://github.com/benzittlau/paper_trail
爲什麼你需要每個型號單獨的表格?老派插件acts_as_versioned以這種方式工作。 – Unixmonkey 2011-03-19 23:29:17
對於每個模型都需要單獨的表,因爲所有版本化對象的單個表將快速增長到不可管理的大小,尤其是當我期望經常讀取和寫入此表時。 – 2011-03-23 06:05:11