2

我在 Rails 应用程序中使用 Workflow gem ( https://github.com/geekq/workflow ) 作为状态机。当一个对象经过各种状态时,我想记录它改变时的日期时间,但不太确定这是否如此简单。

我可能采取的一种方法是增加一个名为“workflow_state_date_changed”的列,并在状态发生变化时更新此列——这是我可以看到对象处于特定状态的时间。然而,它不允许的是从历史上看它过去的所有状态,以及在每个状态中花费的时间。任何想法以一种相当轻松的方式实现这一目标?

期待您的回音。

4

3 回答 3

0

您可以使用ActiveRecord::Observer记录属性事件。如果您使用StateMachine它支持观察不同的方法,例如after_transition. 我不知道如何Observer使用workflow

于 2013-02-26T16:42:57.583 回答
0

根据 Ryan Bate 的出色截屏视频,我最终从头开始构建了一个解决方案:

http://railscasts.com/episodes/392-a-tour-of-state-machines?view=asciicast

于 2013-02-26T16:49:34.320 回答
0

使用 state_machine gem 它非常强大,你可以很容易地做到这一点

https://github.com/pluginaweek/state_machine

于 2013-08-13T12:11:21.843 回答