私はちょうどpayolaの宝石を見て問題が発生し始めました。この宝石はpayola_subscription
と呼ばれるテーブルを作成します。これはサブスクリプションの作成、キャンセルなどを記録するはずです。新しいサブスクリプションを作成すると、それはこのテーブルに記録されますが、サブスクリプションをキャンセルすると、このテーブルは更新されません。私の質問です:cancel subscription
のようなアクションが実行された場合、または、cancel
メソッドでこれらを手動で実装する必要がある場合、payola gemはこのテーブルのレコードを更新するはずですか?奇妙なこと(私にとって)card_update
メソッドで使用されるPayola::UpdateCard.call
は、新しいクレジットカード番号でデータベースを更新しますが、Payola::CancelSubscription.call
はテーブルを更新しません。以下は、サブスクリプションをキャンセルするためのコントローラコードです。何を見落としているのか、間違っているのですか?Payola_subscriptionテーブルを更新するPayola gem with stripe
# 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 [email protected]?
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