2012-01-17 14 views
5

यह है कि मैं क्या है:रेल राज्य_माचिन: ​​मैं प्रारंभिक स्थिति पर एक क्रिया कैसे ट्रिगर करूं?

state_machine :state, :initial => :open do 
    after_transition :on => :buy, :do => :send_buy_notification_email 
    after_transition :on => :take, :do => :send_take_notification_email 
    after_transition :on => :accept, :do => :send_accept_notification_email 
    after_transition :on => :cancel, :do => :send_cancel_notification_email 

अब मैं आरंभ करवाना चाहते हों: प्रारंभिक अवस्था खुला पर send_trade_notification_email।

कैसे मैं ऐसा क्यों है?

चीयर्स,

योएल

उत्तर

3

के बाद से राज्य संक्रमण 'सामान्य' एआर कॉलबैक के अनुरूप हैं, शायद अपने विधि after_create कॉलबैक में शुरू हो रहा हो जाना चाहिए? के रूप में

after_create :send_trade_notification_email 

कौन सा है, अगर यह अनुमति दी गई थी, इसी कार्य को पूरा होगा::

after_transition :on=>:create, :do=>:send_trade_notification_email 
+0

हां यह समझ में आता है। मैं कोशिश करूँगा! Thx – zabumba

+0

क्या इसका मतलब यह है कि 'after_transition'': create 'और ': update' पर लागू हो सकता है? – lulalala

0

मैं एक और दृष्टिकोण

पाया है सब के बाद, अपने संक्रमण को खोलने के लिए, जिस पर क्या होगा बनाने के शून्य से है
def initial_send_trade_notification_email 
    send_trade_notification_email #do what you need on create 
    :open # return initial state 
end 

state_machine initial: lambda(&:initial_send_trade_notification_email) do 
    #... 
end