状态机gem如何在Rails应用程序中保存数据



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工作流被添加到模型文章中。这里有两个问题:

  1. gem工作流将文章状态数据保存在哪里?在Rails应用程序的数据库中?。假设工作流已集成到rails应用程序中。或者这个问题可能更通用:gem工作流如何保存文章状态数据
  2. 通过在模型文章中添加工作流,是否会在表文章中添加更多列以存储状态数据?如果是,表结构的这种变化是什么时候发生的

我认为,如果您想将工作流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

最新更新