【发布时间】:2015-04-07 23:00:24
【问题描述】:
我的 RegistrationsController 中有一个 create 方法,它继承自 Devise::Registrations 控制器。它应该调用 Stripe,如果客户创建成功,它会保存用户并发送确认电子邮件,由 Devise 中的“#create”处理。如果对 Stripe 的调用失败,它应该设置一个 flash 而不是保存用户或发送电子邮件,即抑制 Devise 'create' 方法。如果调用 Stripe 成功,该方法可以正常工作,但如果不成功,仍然会保存用户并发送确认电子邮件。
class RegistrationsController < Devise::RegistrationsController
def create
super
@user = resource
result = UserSignup.new(@user).sign_up(params[:stripeToken], params[:plan])
if result.successful?
return
else
flash[:error] = result.error_message
# TODO: OVERIDE SUPER METHOD SO THE CONFIRM EMAIL IS
# NOT SENT AND USER IS NOT SAVED / EXIT THE METHOD
end
end
我试过skip_confirmation!,这只是绕过了确认的需要。 resource.skip_confirmation_notification!也不起作用。我也尝试过重新定义 resource.send_confirmation_instructions;零;结尾;我的想法是在 else 块中完全退出 create 方法。如何退出创建方法或在 else 块中抑制“超级”,或者另一种方法会更好?谢谢。
【问题讨论】:
标签: ruby-on-rails ruby devise stripe-payments