次の方法を考えると
def change_plan_to(plan_id)
new_plan = Plan.find plan_id
stripe_customer = Stripe::Customer.retrieve(stripe_customer_token)
stripe_customer.update_subscription(plan: new_plan.slug)
self.plan = new_plan
self.active = true
save
rescue Stripe::InvalidRequestError => e
logger.error "[STRIPE] #{ e }"
errors.add :base, "Unable to change your plan!"
false
end
具体的には、行番号 4 ~ 6 です。4 が成功した場合にのみ 4 と 5 が発生するようにしたいのですが、Stripe はそれを if でラップする機能を返しません。エラーの場合は、Stripe::InvalidRequestError をスローします。
これを処理する最良の方法は何ですか? 必要に応じて有効期限切れのアクティブ状態を管理するために、Stripe Webhook コールバックを起動して忘れて許可しますか?
もう 1 つのシナリオは、合格しない場合、4 行目以降ですべてのコードが停止することです。これが救助の仕組みですか?