우리는 Ruby on Rails 응용 프로그램을 가지고 있습니다.상태에주고받은 Ruby gem AASM 전환 이벤트를 호출하는 방법은 무엇입니까?
우리는 Ruby의 aasm gem을 사용하여 객체 상태를 관리하고 있습니다. 우리가
<pre>
object.aasm_current_state
<code>
를 사용하여 얻을 수있는 객체의 현재 상태를 알고 우리는 또한로 전환 할 수있는 상태를 알고있는 경우
<pre>
has_state
aasm do
state :created, :initial => true
state :submitted
state :rejected
state :approved
event :submit do
transitions :to => :submitted, :from => [:created]
end
event :mark_as_incomplete do
transitions :to => :created, :from => [:submitted]
end
event :approve do
transitions :to => :approved, :from => [:submitted]
end
event :reject do
transitions :to => :rejected, :from => [:submitted]
end
end
<code>
, 우리는 어떻게 이벤트를 호출 할 수 있습니다?
주 및 주가 변수이므로 위의 내용을 동적으로 수행해야합니다 ( ). 물론 특정 주와 주 조합을 사용하면 전환을 사용할 수 없으므로이 경우 오류를 감지해야합니다.
우리는 또한 어떤 두 국가 조합 (국가 및부터 상태) 만 1 이벤트가있어, 내가 이론적으로있을 수 있다고 생각 사이에서 가정하고 1보다 나는이 달성 될 수 있다고 생각
의심 할 여지없이, 좋은 연습이 아닐 수도있는 aacm 소스 코드 의 내부에 대해 살펴 보겠습니다. 이견있는 사람?
누구나 전에이 작업을했는지 궁금합니다.
감사합니다.
감사합니다. 예, 이것이 효과가 있습니다. 나중에 누군가가 이벤트 이름을 변경하면 작동을 멈 춥니 다. 내 코드는 이벤트 이름에 종속되지 않으므로보다 일반적입니다. 내 코드는 첫 번째 전환점을 사용하지만 두 주에서 찾아서 실행합니다. 말한대로 다른 전환이있을 수 있습니다. –