2009-04-15 118 views
1

我正在尋找一些關於在事件發生時保存某些(不同)記錄的快照的一些想法,例如用戶從我的應用程序中獲取文檔,以便此文檔可以稍後再生。你建議採取什麼策略?我是否應該使用與當前值相同的表格或使用歷史表格?你知道任何可以幫助我完成任務的插件嗎?請分享您的想法和解決方案。用於在Rails中存儲/檢索歷史數據的技巧

回答

2

我曾經這樣做過一次。我們創建了一個新的表有一個非常相似的結構,我們要記錄表,每當我們需要記錄的東西,我們做了一些與此類似:

attr = object_to_log.attributes 
# Remove things like created_at, updated_at, other unneeded columns 
log = MyLogger.new(attrs) 
log.save 

有一個非常好的機會,也有插件/寶石儘管做這樣的事情。

2

我已經使用acts_as_versioned這樣的東西。

+0

您的鏈接無法正常工作。它提示我去這個鏈接,而不是:http://github.com/technoweenie/acts_as_versioned/tree/master – MattC 2009-04-16 14:35:02

3

有幾個插件。

Acts_audited 

作爲審計爲所有可審計對象創建單個表,並且不需要更改現有表。每次更改都會記錄更改,並將更改存儲爲備註字段中的散列,即更改類型(CRUD)。使用應用程序控制器中的單個語句來指定要審覈的模型非常簡單。 回滾取決於你,但信息在那裏。因爲存儲的信息只是構建整個對象的更改可能會因後續更改而變得困難。

Acts_as_versioned 

有點複雜到設置 - 你需要一個單獨的表的每個對象要版本,你有一個版本ID添加到您現有的表。回滾是一件非常簡單的事情。 github上的叉子提供了自上次版本以來的更改,所以您可以輕鬆突出顯示差異(這是我使用的)。我的猜測是這是最受歡迎的解決方案。

我沒有經驗:acts_as_revisable。下一次我需要版本控制,因爲看起來更復雜,我可能會給這個版本。

0

該OP已經有一年了,但我認爲我會在該組合中添加vestal_versions。它使用單個表來跟蹤每個版本的序列化哈希。通過遍歷更改記錄,模型可以恢復到任何時間點。

似乎是社區最喜歡的這篇文章...