Ruby on rails 是否在某个特定时间点查看文档?(dup,版本控制?)
Mongoid-2.4.7 我需要在特定时间点存储文档的副本Ruby on rails 是否在某个特定时间点查看文档?(dup,版本控制?),ruby-on-rails,ruby-on-rails-3,mongodb,mongoid,Ruby On Rails,Ruby On Rails 3,Mongodb,Mongoid,Mongoid-2.4.7 我需要在特定时间点存储文档的副本 我会知道确切的时间点 它们将手动发生(定义为到期日) 并且在文档的生命周期内只会发生一次或两次 最好的方法是什么 单独的模型-创建单独的ExpiredAnswery模型,并在记录“过期”时复制记录?这感觉有点恶心,尤其是考虑到父级有嵌入式文档,而父级也有嵌入式文档 版本控制-内置的Mongoid版本控制可以工作,但我不需要每次更新都存储版本,只需要在1或2个特定时间点存储。所以我需要能够手动设置 (此外,这个父文档实际上是嵌入的;
- 我会知道确切的时间点
- 它们将手动发生(定义为到期日)
- 并且在文档的生命周期内只会发生一次或两次
那么,在特定时间点查看文档(及其嵌入文档)的最佳方式是什么呢?您必须手动执行此操作。我会在父文档中创建另一个名为previor\u version或snapshot\u version的密钥,并将副本存储在那里 您需要测试mongoid如何处理该分配,并可能执行手动深度复制,因为您有许多嵌入式字段/文档
我认为单独的模型是多余的,版本控制不适用于此应用程序(正如您所说,您只需要一个副本)来自Mongoid文档关于版本控制的内容: 通过将持久性调用包装在无版本块中,可以在任何时间点跳过版本控制 这有点麻烦,但您可以使用if语句,在需要时从版本控制切换到无版本控制。也就是说,大多数情况下都是无版本保存,但当设置标志时,if语句会切换到版本化保存
person.versionless do |doc|
doc.update_attributes(name: "Theodore")
end