我正在使用来自http://elitists.textdriven.com/svn/plugins/acts_as_state_machine/trunk的 AASM
在我的示例中,我有一个 Karate dojo rails 站点。在该网站上,教师可以管理他们所教授的课程并将他们的学生转移到下一个逻辑带。
我的“学生”模型使用 AASM 进行传送带进度,它的定义如下:
class Student < ActiveRecord::Base
acts_as_state_machine :initial => :White_Belt
state :White_Belt
state :Yellow_Belt
state :Green_Belt
state :Purple_Belt
state :Brown_Belt
state :Black_Belt
event :Graduate do
transitions :from => :White_Belt, :to => :Yellow_Belt
...
transitions :from => :Brown_Belt, :to => :Black_Belt
end
end
...而教师模型是这样定义的...
class Teacher < ActiveRecord::Base
def Promote_Student(pupil)
pupil.Graduate!
end
end
有没有办法确保只有教师才能称呼“学生。毕业生!”?我见过“:guard”命令,但似乎我只能拥有检查当前对象(学生)的函数,而不是调用该函数的对象(教师)。
看来我无法向我的事件添加参数,例如......
event :Gradate(teacher_id) do
...
end
...这将是理想的。