3

こんにちは私は私のorder_decorator.rbに次のコード行があります

Spree::Order.state_machine.before_transition :to => :delivery,
                                             :do => :valid_geolocation?

Spree::Order.state_machine.after_transition :to => :complete,
                                             :do => :notify_shops_new_order

valid_geolocation?に移行する前に呼び出されます:deliveryが、状態notify_shops_new_orderの後に呼び出されません。complete

理由がわかりません。私はチェックアウトをするためにpaypalを使っています。これが関係しているのかどうかはわかりません。

4

1 に答える 1

2

spree_paypal_express gem を使用している場合、完全な状態への自然なステート マシン遷移を使用しないため、完了後のコールバックは呼び出されません。過去に私にとってうまくいったのは、呼び出しをfinalize!メソッドにチェーンすることです:

# in order_decorator.rb
def finalize_with_notify_shops!
  finalize_without_notify_shops!
  notify_shops_new_order
end
alias_method_chain :finalize!, :notify_shops
于 2013-08-08T13:05:33.077 に答える