我有一个名为Creative
的轨道模型,它使用aasm
gem实现工作流程。目前我的模型只有一个工作流程在其中实现。
我有一个业务场景,需要我在同一个模型中实现另一个工作流,如果模型上的布尔值是true
,它将被激活。
我认为有两种方法可行
Creative
使用相同表名的新模型,并在那里实现工作流程什么是可以在这里实施的好设计?
我知道这是一个非常开放的问题,如果有人遇到这种情况,我很乐意得到建议
我觉得这样的事情应该有效。
event :promote do
transitions :from => [:pending], :to => :in_progress, :guard => :boolean_check?
transitions :from => [:pending], :to => :done
end
event :complete do
transitions :from => [:in_progress], :to => :done, :guard => :boolean_check?
end
private
def boolean_check?
self.boolean_column
end
如果布尔值为true,则流程为
pending > in_progress > done
其他
pending > done
注意:如果假设您有3-4个工作流程,这可能会变得复杂。
没有2个工作流程,这没关系