我正在构建一个使用MongoDB作为后端的Rails应用程序,使用Mongoid作为ODM。我发现它非常有用,但我正在寻找一种跟踪以下内容的好方法:
有关库的任何建议吗?
谢谢!
答案 0 :(得分:0)
您有几种选择。以下是一些需要注意的事项:
我有一个案例,我使用嵌入的Note对象来跟踪订单的状态和进展。这是我所做的大致概述:
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
然后我创建了一个观察者来跟踪Order中的状态变化:
class OrderObserver < Mongoid::Observer
def after_transition(order, transition)
order.notes.build(state: transition.to)
end
end
after_transition
是状态机插件提供的回调。如果您不关心集成状态机,您可以使用Mongoid提供的回调,例如after_save
,after_update
,around_update
等。
每次我转换订单的状态时,我都会得到一个新的带时间戳的记录,记录每次转换的历史记录。我已经留下了很多实施细节,但到目前为止它对我来说还不错。
链接:
答案 1 :(得分:0)
尝试mongoid-history和trackoid gems。第一个允许您跟踪更改,后者允许您跟踪活动。
答案 2 :(得分:0)
只需使用公共活动gem。它支持rails 3和4以及mongoid嵌入式文档