2012-03-22 45 views
0

Mongoid - 2.4.7在某個特定時間點查看文檔? (dup,版本控制?)

我需要在特定的時間點存儲文檔的副本。

  • 我就知道在時間
  • 的確切地點,他們將手動發生(如到期日定義)
  • ,將只在文檔的生命發生一次或兩次。

這樣做的最佳方法是什麼?

分離模型 - 創建單獨的ExpiredWhatever模型並在記錄「過期」時複製記錄?這感覺有點粗糙,特別是考慮到父母已嵌入文檔,其中也嵌入了文檔。

版本 - 內置的Mongoid版本控制可以工作,但我不需要每個更新都存儲一個版本,只需要1或2個特定時間點。所以我需要能夠手動設置此。

(另外這個父文檔實際上是嵌入本身,但是,因爲我知道Mongoid ::版本不帶嵌入文檔工作可能會改變。)

那麼,什麼是查看文檔(最好的辦法及其嵌入式文檔)在特定的時間點?

回答

1

您將不得不手動執行此操作。我會在父文檔named或prior_version或snapshot_version中創建另一個關鍵字,並將副本存儲在那裏。

您將需要測試以查看mongoid如何處理該分配並可能執行手動深層複製,因爲您有許多嵌入字段/文檔。

我覺得獨立的模型是矯枉過正和版本不會爲這個應用程序的工作(如你所說,你只需要一個副本)

0

從上版本的Mongoid文檔:

您可以跳過在任何時間通過在無版本塊中包裝持久性調用來進行版本控制。

person.versionless do |doc| 
    doc.update_attributes(name: "Theodore") 
end 

這是有點麻煩,但你可以有一個,如果從版本切換語句versionless當你想它。也就是說,大多數情況下無版本保存,但是當你設置一個標誌時,if語句切換到版本化保存。