SJP*_*SJP 2 ruby-on-rails state-machine state-machine-workflow
我正在尝试编写一个应用程序,允许用户使用State Machine gem管理工作流,但我不知道如何继续允许用户使用状态机gem为ruby定义自己的状态机.
在gem文档的动态定义部分,它说我应该能够通过用数据源替换下面的代码来实现这一点.
def transitions
[
{:parked => :idling, :on => :ignite},
{:idling => :first_gear, :first_gear => :second_gear, :on => :shift_up}
# ...
]
end
Run Code Online (Sandbox Code Playgroud)
我不知道该怎么做.如何定义数据库中的转换?
因为transitions它只是一种方法,所以你可以以任何你想要的方式实现它.这是一种可能的方式.
我假设您正在使用ActiveRecord.
使用to,from和on列定义Transition模型和关联的转换表,所有字符串.然后你可以开始定义转换,例如:
Transition.create(:from => "parked", :to => "idling", :on => "ignite")
Run Code Online (Sandbox Code Playgroud)
然后在你的过渡方法中:
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
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用链接的文档中的其他代码动态创建状态机.
这只是一个例子,可以进一步优化.我会把那部分留给你.希望这会给你一个良好的开端.
| 归档时间: |
|
| 查看次数: |
1411 次 |
| 最近记录: |