给定使用aasm gem的下一个模型:
class Job
include AASM
aasm do
state :sleeping, :initial => true
state :running, :cleaning
event :run do
transitions :from => :sleeping, :to => :running
end
event :clean do
transitions :from => :running, :to => :cleaning
end
event :sleep do
transitions :from => [:running, :cleaning], :to => :sleeping
end
end
end
我的网络应用程序上有两种类型的用户(普通用户和超级用户)。我需要超级用户类型,能够调用他们想要的事件。就像在 state=cleaning 的作业上调用 #run。
因此,据我了解,我需要的是在运行时解决转换的问题。如果用户是超级用户,则from将是所有状态,但如果用户不是超级用户,则每个 from 将具有不同的状态。
有什么干净的方法可以做到这一点吗?你有什么想法?