Worflow是一个状态机ruby gem。以下是github文档中的一个代码示例:
class Article
include Workflow
workflow do
state :new do
event :submit, :transitions_to => :awaiting_review
end
state :awaiting_review do
event :review, :transitions_to => :being_reviewed
end
state :being_reviewed do
event :accept, :transitions_to => :accepted
event :reject, :transitions_to => :rejected
end
state :accepted
state :rejected
end
end
Gem工作流被添加到模型文章中。这里有两个问题:
- gem工作流将文章状态数据保存在哪里?在Rails应用程序的数据库中?。假设工作流已集成到rails应用程序中。或者这个问题可能更通用:gem工作流如何保存文章状态数据
- 通过在模型文章中添加工作流,是否会在表文章中添加更多列以存储状态数据?如果是,表结构的这种变化是什么时候发生的
我认为,如果您想将工作流gem保存到数据库中,则必须在表中创建一个名为workflow_state
的字符串字段列(请参阅与ActiveRecord的集成)
class AddWorkflowToArticlesTable < ActiveRecord::Migration
def change
add_column :articles, :workflow_state, :string
end
end
类似的东西应该起作用,然后article.state
应该反映数据库中保存的内容
希望这能帮助
内存中。如果选择了该选项,也可以通过活动记录连接到数据库。
发件人:https://github.com/geekq/workflow-大约三分之一的路程。
与ActiveRecord集成
工作流库可以完全自动地处理状态持久性。您只需要在表上定义一个名为workflow_state的字符串字段,并像往常一样在模型类中包括工作流混合:
class Order < ActiveRecord::Base
include Workflow
workflow do
# list states and transitions here
end
end