سؤال

وأنا باستخدام 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 الأولى إلكتروني القيمة على الأساليب والرموز.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top