rails state_machine: Как мне запустить действие: начальное состояние? - PullRequest
5 голосов
/ 18 января 2012

Вот что у меня есть:

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 при открытии исходного состояния.

Как мне это сделать?

Ура,

Joel

Ответы [ 2 ]

3 голосов
/ 18 января 2012

Поскольку переходы состояний аналогичны «обычным» обратным вызовам AR, возможно, ваш метод должен быть запущен в обратном вызове after_create?В конце концов, вы переходите от nil к open, что происходит при создании:

 after_create :send_trade_notification_email

Что, если бы это было разрешено, могло бы выполнить то же самое, что и:

 after_transition :on=>:create, :do=>:send_trade_notification_email
0 голосов
/ 21 марта 2014

я нашел другой подход

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...