尝试使用适用于 Rails 4 的 Devise 3.0 并考虑集成到现有应用程序中以替换我自己的身份验证系统。
我自己users_controller
在注册期间与 API(Stripe)进行了通信,我不确定如果我要使用 Devise,我将如何包含此功能?
我是否想以某种方式覆盖/扩展设计控制器?任何帮助将非常感激。
尝试使用适用于 Rails 4 的 Devise 3.0 并考虑集成到现有应用程序中以替换我自己的身份验证系统。
我自己users_controller
在注册期间与 API(Stripe)进行了通信,我不确定如果我要使用 Devise,我将如何包含此功能?
我是否想以某种方式覆盖/扩展设计控制器?任何帮助将非常感激。
您可以在控制器中定义操作并在其中调用super
,这将包括相应设计操作的功能。您还可以在其中添加自己的功能。
例如:考虑注册控制器(注册控制器)
在这里,您可以在您自己的注册控制器的创建操作中使用该设计的注册控制器的创建操作代码,并按照代码中的注释添加您的功能。
class RegistrationsController < Devise::RegistrationsController
.
.
.
def create
build_resource(sign_up_params)
if resource.save
if resource.active_for_authentication?
set_flash_message :notice, :signed_up if is_navigational_format?
sign_up(resource_name, resource)
# Here the user successfully signs up, so you can use your stripe API calls here.
respond_with resource, :location => after_sign_up_path_for(resource)
else
set_flash_message :notice, :"signed_up_but_#{resource.inactive_message}" if is_navigational_format?
expire_session_data_after_sign_in!
respond_with resource, :location => after_inactive_sign_up_path_for(resource)
end
else
clean_up_passwords resource
respond_with resource
end
end
end
对于未来的谷歌人:可以调用super
带有块的继承控制器的动作并做任何你想做的事情,而不会覆盖设计代码:
class Users::RegistrationsController < Devise::RegistrationsController
def create
super do |user|
NotificationMailer.user_created(user).deliver
end
end
end