Ruby on rails 你如何追踪历史和未来;Mongoid的活动?
我正在构建一个Rails应用程序,它使用MongoDB作为后端,Mongoid作为ODM。我发现它非常有用,但我正在寻找一种跟踪以下内容的好方法:Ruby on rails 你如何追踪历史和未来;Mongoid的活动?,ruby-on-rails,mongodb,mongoid,Ruby On Rails,Mongodb,Mongoid,我正在构建一个Rails应用程序,它使用MongoDB作为后端,Mongoid作为ODM。我发现它非常有用,但我正在寻找一种跟踪以下内容的好方法: 更新对象(Mike将价格从50更改为75) 创建对象(Dan在Mike的帖子中添加了一条评论) 基本统计数据(迈克的帖子被浏览了10次,编辑了3次) 对图书馆有什么建议吗 谢谢 您有几种选择。这里有几件事需要记住: Mongoid有一个版本控制插件,您可以在其中跟踪文档的版本 可以创建嵌入文档来存储模型上的注释/更改。当某些事情发生时,使用观察
- 更新对象(Mike将价格从50更改为75)
- 创建对象(Dan在Mike的帖子中添加了一条评论)
- 基本统计数据(迈克的帖子被浏览了10次,编辑了3次)
谢谢 您有几种选择。这里有几件事需要记住:
- Mongoid有一个版本控制插件,您可以在其中跟踪文档的版本
- 可以创建嵌入文档来存储模型上的注释/更改。当某些事情发生时,使用观察者添加注释。如果您愿意,可以将此注释与文档版本绑定
class Order
include Mongoid::Document
include Mongoid::Paranoia
include Mongoid::Timestamps
embeds_many :notes, as: :notable
# fields
end
class Note
include Mongoid::Document
include Mongoid::Timestamps
field :message
field :state
field :author
#(I can add notes to any Model through :notable)
embedded_in :notable, polymorphic: true
end
然后,我创建了一个观察者来按顺序跟踪状态变化:
class OrderObserver < Mongoid::Observer
def after_transition(order, transition)
order.notes.build(state: transition.to)
end
end
类OrderObserverafter_transition
是状态机插件提供的回调。如果您不关心如何集成状态机,那么可以使用Mongoid提供的回调,如保存后的、更新后的、更新前后的等
每次我通过订单的状态进行转换时,我都会得到一个新的时间戳注释,记录每个转换的历史。我遗漏了很多实现细节,但到目前为止它对我来说运行良好
链接:
- -Mongoid为观察者提供了哪些回调
试试mongoid历史和trackoid宝石。前者允许您跟踪更改,后者允许您跟踪活动
只需使用公共活动宝石。它支持rails 3和4以及mongoid嵌入式文档