我正在使用finite machine处理Project
的状态。每个项目都属于一个Category
,每个类别都有许多Step
。
现在,我想在ProjectStateMachine
中定义next
事件,该事件根据项目的当前状态和所属类别将项目转移到下一步。
例如,假设我有一个与new lab
类别关联的“ submitted
”项目(处于equipment
状态)。 equipment
类别包含['submitted', 'started', 'completed']
个步骤。
next
项目发生new lab
事件时,其状态变为started
,然后再次发生next
事件时,项目进入{{1 }}状态。
有没有办法做到这一点?
答案 0 :(得分:1)
我不熟悉该特定的宝石(稍后会详细介绍),但是我认为您可以执行以下操作:
events {
self.category.steps.each_cons(2) do |set|
event :next, set[0].to_sym => set[1].to_sym
end
}
但是话虽如此,您所引用的gem已有一年多没有更新了。我建议您使用诸如this之类的最新版本(如果您使用的是基于state-machines gem的ActiveRecord)。最后一个链接将您带到动态定义的特定部分,这无疑会为您提供所需的内容。
欢呼