我想知道我是否正确理解了Ruby 中的begin
/rescue
构造。我阅读了 Ruby 文档,但我仍然不确定我是否清楚。我正在我正在构建的 Rails 站点中实施 Stripe 以进行付款。Stripe 建议使用begin
/ rescue
。根据 stripe.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
结尾之后开始的部分运行。在我看来,在条带充电失败时,救援代码将运行,导致 rails 重定向到并且以下代码将不会运行,这是我想要的行为。我是否正确理解这一点?begin
rescue
charges_path
@payment