在这里发帖,因为我可能遗漏了一些明显的东西。我收到了:
A NoMethodError occurred in webhook#event:
undefined method 'cancel' for #<User:0x0000000a0b7520>
vendor/bundle/ruby/1.9.1/gems/activemodel-3.2.11/lib/active_model/attribute_methods.rb:407:in `method_missing'
完整跟踪为here。来自stripe_event.rb的相关代码块是:
events.subscribe 'customer.subscription.deleted' do |event|
stripe_id = event.data.object['customer']
subscription = ::Subscription.find_by_stripe_id(stripe_id)
subscription.subscription_owner.try(:cancel)
end
然而,看起来它试图在用户模型上调用:cancel
- 为什么会这样做?它不应该试图在SubscriptionsController(here,第131行)上调用它,它有:cancel
的方法吗?
答案 0 :(得分:0)
虽然它可能是一个触发事件的控制器,但事件的想法是通知独立于触发源的某些操作。
您可以使用此事件添加要执行的其他代码。
events.subscribe 'customer.subscription.deleted' do |event|
# get the "stripe ID" from event data
stripe_id = event.data.object['customer']
# find the corresponding Subscription using this ID
subscription = ::Subscription.find_by_stripe_id(stripe_id)
# try to call cancel on the owner (a User) of that subscription
subscription.subscription_owner.try(:cancel)
end