2011-06-12 61 views
1

如果我想創建一個像Record這樣的模型,其中存儲了一個個人記錄(比如記錄時間爲100米短跑)。現在如果我想要人們設置新的個人記錄(更快的時間爲100米),我將如何將其存儲在數據庫中。模型實例版本控制?跟蹤以前的記錄

我正在考慮像couchDB這樣的版本控制數據庫,但這聽起來像是矯枉過正。我還可以參考記錄與另一個ID,像

Record 
:id 
:name 
:record_id #=> this refers to the original Record 

然而,這也似乎是一個骯髒的解決方案(refencing一個模型本身)。現在我確定這是一個常見問題(重寫模型實例,但保留歷史記錄),我想知道是否有一個好的解決方案?

回答

2

你想看看一個像papertrail那樣的寶石然後你可以設置對象的版本。 使用寶石也很容易,你設置後可以使用它,它會返回一個數組版本:

>> widget = Widget.find 42 
>> widget.versions    # [<Version>, <Version>, ...