【发布时间】:2014-11-06 02:09:56
【问题描述】:
我有一个使用 Mongoid::Versioning 设置的 Rails 模型。
class Post
include Mongoid::Document
include Mongoid::Timestamps
include Mongoid::Versioning
field :name, type: String
end
我想删除特定的旧版本。例如。
post = Post.create name: 'A'
post.update_attributes name: 'B'
post.update_attributes name: 'C'
post.version #=> 3
post.versions.count #=> 2
first_version = post.versions.first #=> #<Post _id: , created_at: _, updated_at: _, version: 2, name: "B">
我想删除first_version,但是当我尝试删除它时..
first_version.delete
post.versions.count #=> 1
post.reload
post.versions.count #=> 0
..所有版本都被删除。
我尝试改用destroy,尝试在传递给post.versionless 的块内运行代码,但无济于事。我该怎么办?
更新:
我已经让它与Mongoid::Paranoia 一起工作。不过最好能灵活地不使用Mongoid::Paranoia。
【问题讨论】:
-
您应该包括您正在使用的 Mongoid 版本。 FWIW Mongoid::Versioning 已弃用,将在 4.0.0 中删除
-
Mongoid 4,但我通过 mongoid-versioning gem 使用版本控制(它带回了已删除的功能)。
标签: ruby-on-rails mongoid