2012-01-17 38 views
5

Đây là những gì tôi có:rails state_machine: Làm cách nào để kích hoạt một hành động trên: trạng thái ban đầu?

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 

Bây giờ tôi muốn kích hoạt: send_trade_notification_email về tình trạng ban đầu mở.

Tôi làm như thế nào?

Chúc mừng,

Joel

Trả lời

3

Kể từ khi chuyển trạng thái là tương tự như callbacks AR 'bình thường', có lẽ phương pháp của bạn nên được kích hoạt trong callback after_create? Xét cho cùng, quá trình chuyển đổi của bạn là từ nil để mở mà sẽ xảy ra trên tạo:

after_create :send_trade_notification_email 

nào, nếu nó được phép, sẽ thực hiện được điều tương tự như:

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

Có điều đó có ý nghĩa. Tôi sẽ cố gắng làm điều đó! Thx – zabumba

+0

Điều này có nghĩa là 'after_transition' có thể áp dụng cho': create' và ': update' không? – lulalala

0

tôi đã tìm được cách tiếp cận khác

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 
Các vấn đề liên quan