begin
Ruby の/rescue
コンストラクトを正しく理解しているかどうかを知りたいです。Ruby のドキュメントを読みましたが、明確かどうかまだわかりません。構築中のRailsサイトで支払い用にStripeを実装しています。Stripe はbegin
/の使用を推奨してrescue
います。strip.com のドキュメントに基づいて、支払いコントローラーに次のコードがあります。
begin
charge = Stripe::Charge.create(
:amount => @amount,
:card => token,
:description => 'Rails Stripe customer',
:currency => 'usd'
)
rescue Stripe::CardError => e
flash[:error] = e.message
redirect_to charges_path
end
@payment = Payment.new(params[:payment])
if @payment.save
flash[:notice] = "Payment taken for #{number_to_currency(@amount/100)}."
else
flash[:notice] = "Payment record not created."
redirect_to charges_path
end
ストライプへの充電が失敗した場合、/@payment
の終わりの後に続くセクションで始まるセクションを実行したくありません。ストライプチャージが失敗すると、レスキューコードが実行され、レールがにリダイレクトされ、次のコードが実行されないように見えます。これは私が望む動作です。私はこれを正しく理解していますか?begin
rescue
charges_path
@payment