質問

私は http://elitists.textdriven.com/svnからAASMを使用しています/プラグイン/ 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を!」? 「:ガード」コマンドを、それは私が唯一の現在のオブジェクト(学生)とない機能(先生)と呼ばれるオブジェクトを確認する機能を持つことができるようです。

私が見てきました。

また、私は私のイベントにPARAMを追加することができないように見えるような...

event :Gradate(teacher_id) do
   ...
end

...理想的である。

役に立ちましたか?

解決

私は執行のこの種は、あなたが正しくコーディングすることを提供する必要はないと思います。あなたは、コード内で自分でこれを施行ます。

あなたは(学生)促進などティーチャー#として関数を記述して、それを直接呼び出すことがない旨の大学院のイベントにいくつかのコメントを書きますが、呼び出し元教師の#の代わりに促進することができます。

は、また、最初の文字を大文字にする方法及びシンボルに好ましいwhitout camel_case。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top