gpt4 book ai didi

ruby-on-rails - 限制mongoid中的版本属性

转载 作者:可可西里 更新时间:2023-11-01 09:25:16 25 4
gpt4 key购买 nike

我正在使用 Mongoid::Versioning,它工作得很好,除了我想防止几个字段被版本化。

文档中没有太多关于它的信息,所以我不确定该怎么做。

http://mongoid.org/docs/extras.html

class Person
include Mongoid::Document
include Mongoid::Versioning

# keep at most 5 versions of a record
max_versions 5
end

它们展示了如何完全跳过一个版本,但没有展示如何限制某些字段被版本化。

有什么想法吗?

更新

我在挖掘代码时发现了类似这样的东西,但我不确定如何使用它。

https://github.com/mongoid/mongoid/blob/master/lib/mongoid/versioning.rb#L90

最佳答案

所有字段都有选项 :versioned 默认情况下为 true 如果您不希望此版本化,则可以传递 false。例如我想要名称版本但没有登录

class User
include Mongoid::Document
include Mongoid::Versioning

field :name, :type => String
field :login, :type => String, :versioned => false
end

您也可以在嵌入关联中传递 :versioned 选项。

您可以通过遍历文档中的 .fields 来覆盖此选项。

因此,在您的代码中,您可以通过创建一个小方法在某些字段上添加避免版本控制:

class User

include Mongoid::Document
include Mongoid::Versioning
include Mongoid::Voteable

field :name, :type => String
field :login, :type => String

def self.avoid_versioned(*unversioned_fields)
unversioned_fields.each do |f|

fe = self.fields[f.to_s]
fe.options[:versioned] = false if fe

re = self.relations[f.to_s]
re[:versioned] = false if re

end
end
avoid_versioned( :login, :votes )
end

关于ruby-on-rails - 限制mongoid中的版本属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9555135/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com