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和 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |