2012-01-17 82 views
5

這是我有:rails state_machine:如何觸發一個動作:初始狀態?

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

由於狀態轉換是類似於「平常」 AR回調,也許你的方法應該是在after_create回調觸發?畢竟,你的轉變是從零開這會發生在創建:

after_create :send_trade_notification_email 

其中,如果允許,將完成同樣的事情:

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

是的,這是有道理的。我會嘗試的! Thx – zabumba 2012-01-18 13:00:05

+0

這是否意味着'after_transition'可以應用於':create'和':update'? – lulalala 2016-11-11 02:50:39

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 
相關問題