Ruby Mongoid-至少为一个文档将字段设置为true

Ruby Mongoid-至少为一个文档将字段设置为true,ruby,sinatra,mongoid,Ruby,Sinatra,Mongoid,我希望数据库中至少有一个名为“selected”的字段设置为true的文档总是。我该怎么做?很可能我必须使用回调,但哪一个:在创建之前(或之后)\u upsert,\u update 我怎样才能确保无论执行什么操作,它都被设置为true:创建、更新、上传。。。?我想为它们中的每一个创建回调是不对的。在创建和更新之后 所以你可以做: after_save do |your_class| your_class.update_column(:selected, true) unless YourC

我希望数据库中至少有一个名为“
selected
”的字段设置为true的文档总是。我该怎么做?很可能我必须使用回调,但哪一个:
在创建之前(或之后)\u upsert,\u update

我怎样才能确保无论执行什么操作,它都被设置为true:创建、更新、上传。。。?我想为它们中的每一个创建回调是不对的。

在创建和更新之后

所以你可以做:

after_save do |your_class|
  your_class.update_column(:selected, true) unless YourClass.where(selected: true).exists?
end

注意

不会有无限递归吗?很好。那上面有一个链接。/不会有无限递归吗?