Koudoku:用户模型上的NoMethodError

时间:2016-09-01 02:33:47

标签: ruby-on-rails ruby ruby-on-rails-3

在这里发帖,因为我可能遗漏了一些明显的东西。我收到了:

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的方法吗?

1 个答案:

答案 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