我在我的RegistrationsController中創建了一個方法,該方法繼承自Devise :: Registrations控制器。它應該調用Stripe,如果客戶創建成功,它會保存用戶併發送一封確認電子郵件,該電子郵件由Devise中的「#create」處理。如果對Stripe的調用失敗,它應該設置一個閃存,而不是保存用戶或發送電子郵件,即禁止Devise'create'方法。如果對Stripe的調用成功,則此方法正常工作,但如果不成功,用戶仍會保存,並且仍會發送確認電子郵件。Ruby/Rails:壓制超類功能 - Stripe和Devise的集成
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塊的創建方法。我如何退出創建方法或在else塊中禁止「超級」,或者另一種方法會更好?謝謝。
這工作,謝謝。我必須在控制器的私有方法中定義「設置最小密碼長度」,我從DeviseController中獲得它。我還將下一行'respond_with resource'更改爲redirect_to new_user_registration_path(plan:params [:plan])',以便註冊失敗或信用卡交易將用戶引導至相同的註冊頁面。 – user3291025 2015-02-08 01:52:27
很高興知道!如果你認爲它會幫助別人,你可以編輯我的答案。 – dgilperez 2015-02-08 02:12:46