AASM: التحقق من الكائن الذي يتحرك دولة إلى الأمام
-
20-09-2019 - |
سؤال
وأنا باستخدام AASM من http://elitists.textdriven.com/svn / الإضافات / acts_as_state_machine / جذع
في بلدي على سبيل المثال، لدي دوجو الكاراتيه القضبان الموقع. على الموقع، يمكن للمعلمين إدارة الطبقات أنها إرشاد وتحريك الطلاب على حزام المنطقي التالي.
والكمبيوتر "الطالب" استخدام نموذج 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
هل هناك طريقة التأكد من أن المعلمين الوحيد يمكن أن نطلق عليه "Student.Graduate!"؟ رأيت ": الحرس". الأوامر، ولكن يبدو أنني يمكن أن يكون الوظائف التي تحقق الكائن الحالي (الطالب) وليس الكائن الوحيد الذي استدعاء الدالة (المعلم)
ويبدو أيضا أن لا أستطيع إضافة المعلمة لهذا الحدث مثل بلدي ...
event :Gradate(teacher_id) do
...
end
... التي من شأنها أن تكون مثالية.
المحلول
وأعتقد أن ليست هناك حاجة قدمت هذا النوع من إنفاذ أنك الرمز بشكل صحيح. يمكنك تطبيق هذا بنفسك في التعليمات البرمجية.
ويمكنك كتابة دالة مثل المعلم # تشجع (طالب)، ومن ثم كتابة بعض التعليقات على الحدث خريج تفيد بعدم تسميته مباشرة، ولكن يدعو المعلم # تشجيع بدلا من ذلك.
ويفضلوcamel_case أيضا whitout الأولى إلكتروني القيمة على الأساليب والرموز.