带条纹的 Payola gem - 更新 payola_subscription table

Payola gem with Stripe - Updating payola_subscription table

我刚开始查看 payola gem 时遇到了问题。 gem创建了一个叫做payola_subscription的table,应该是记录订阅的创建、取消等,至此,我新建订阅的时候,记录在这个table,但是当我取消订阅时,此 table 不会更新。我的问题是:如果执行 cancel subscription 等操作,payola gem 是否应该更新此 table 上的记录,或者我必须在我的 cancel 方法中手动实现这些?奇怪的事情(对我来说)是 card_update 方法中使用的 Payola::UpdateCard.call 使用新的信用卡号更新数据库,但 Payola::CancelSubscription.call 不更新 table。下面是取消订阅的控制器代码。我忽略了什么或做错了什么?

# subscriptions_controller.rb
class SubscriptionsController < ApplicationController
  include Payola::StatusBehavior

  def create
    owner = current_user # this is just an example for Devise
    # set your plan in the params hash
    params[:plan] = SubscriptionPlan.find_by(id: params[:plan_id])
    # call Payola::CreateSubscription
    subscription = Payola::CreateSubscription.call(params, owner)
    current_user.subscription_plan_id=params[:plan_id]
    current_user.save
    flash.notice = "Subscription successfully created"
    UserMailer.subscribe_email(current_user).deliver_now
    render_payola_status(subscription)
  end

  def cancel
    if params[:guid].present?
       @subscription = Payola::Subscription.find_by(:guid => params[:guid])
       Payola::CancelSubscription.call(@subscription) if !@subscription.nil?
       current_user.subscription_plan_id=nil
       current_user.save
       UserMailer.unsubscribe_email(current_user).deliver_now
       flash.notice = "Subscription successfully cancelled"
       redirect_to dashboard_path
    end
  end

  def card_update
      @subscription = Payola::Subscription.find_by!(guid: params[:guid])
      Payola::UpdateCard.call(@subscription, params[:stripeToken])
      flash.notice = "Your credit card successfully updated!"
      render_payola_status(@subscription)
  end

end

设置 Stripe webhook 以将取消和其他更改从 Stripe 同步到您的应用程序。 https://github.com/peterkeen/payola#installation 中有关 webhook 设置的详细信息。

(此答案的原始来源 https://github.com/peterkeen/payola/issues/237#issuecomment-234737250