2014-03-11 2 views
0

Я настраиваю, чтобы отменить подписку от контроллера подписки, однако на действия я получаю сообщение об ошибке Нет метода undefined method `stripe_customer_token'NoMethodError неопределенный метод `stripe_customer_token»

Точки ошибки в строке @customer = Stripe::Customer.retrieve(@user.stripe_customer_token)

подписок контроллер :

 def cancelsubscription 
     @customer = Stripe::Customer.retrieve(current_user.stripe_customer_token) 
     @customer.cancel_subscription() 
     @current_user.subscriptionstatus = false 
     current_user.save! 
     UserMailer.stripe_cancellation(current_user).deliver 
     flash.alert = 'Your subscription has been cancelled successfully!' 
     redirect_to edit_user_registration_path 
     end 
end 
+1

У вас есть поле/метод, называемый 'stripe_customer_token' в модели пользователя? И где вы инициализировали '@ user'? –

+0

'stripe_customer_token' находится в модели подписки. – xps15z

+1

Что такое @user? Экземпляр какого класса? Это должен быть экземпляр модели Subscription. Кроме того, вы можете добавить код, в котором вы устанавливаете значение @user. –

ответ

2

stripe_customer_token является полем в Subscription модели. Связано с подпиской has_one.

Обязательно установите значение @user.

И изменить

@customer = Stripe::Customer.retrieve(@user.stripe_customer_token) 

в

@user = ...  ## Set the value of @user 
@customer = Stripe::Customer.retrieve(@user.subscription.stripe_customer_token) 
Смежные вопросы