加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Ruby on Rails工作流宝石是否具有用户定义的状

发布时间:2020-12-17 02:49:06 所属栏目:百科 来源:网络整理
导读:我开发了 Ruby on Rails应用程序,现在正在寻找允许配置状态而无需任何编程的工作流gem. 我发现了一些宝石:rails_workflow,state_machine,workflow. 但据我所知,这些宝石假定状态将是硬编码的,例如workflow宝石状态: class Article include Workflow workfl
我开发了 Ruby on Rails应用程序,现在正在寻找允许配置状态而无需任何编程的工作流gem.

我发现了一些宝石:rails_workflow,state_machine,workflow.

但据我所知,这些宝石假定状态将是硬编码的,例如workflow宝石状态:

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

我需要我的应用程序用户状态可以自己配置状态和转换条件,而无需开发人员.

Redmine已经有了这个功能,但它是现成的系统,而不是我可以连接到我的应用程序的gem

有没有这些功能的宝石?

解决方法

我之前的评论设计了以下解决方案.使用gem state_machine,然后您可以使用ActiveRecord定义状态机的转换,如下所示:

使用列,“到”,“从”和“打开”定义过渡模型.它们都将使用字符串作为其数据类型.

州将定义如下:

Transition.create(:from => "parked",:to => "idling",:on => "ignite")

在此之后,您需要修改您的过渡方法,如下所示:

def transitions
  transitions_data = []
  Transition.all.each do |transition|
    transitions_data << { transition.from.to_sym => transition.to.to_sym,:on => transition.on.to_sym }  
  end
  transitions_data
end

显然,如果你有多台机器,你可以使用其他一些列,例如’machine_name’,并在那里存储机器名,只获取那些行.

正如回答此问题的原始人所说:“这只是一个例子,可以进一步优化.我会把这部分留给你.希望这会给你一个良好的开端.”

我希望这能指出你正确的方向.

资源:

SO和
state_machine Gem

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读