我正在进行多步注册过程。我将值存储在session
上。在最后一步,我想打电话给DeviseRegistration#create
。我已经正确配置了devise_scope
,我可以通过DeviseRegsitration#create
方法接听来电。
我遇到的主要问题是它使用POST请求中提交的参数而不是我session
var上的参数。
我尝试过这样的事情:
request.params = ActionController::Parameters.new session[:registration_params]
我已阅读ActionDispatcher
课程,但我无法确定如何做到这一点。
答案 0 :(得分:0)
您可以自定义设计控制器。如the wiki中所述:
rails generate devise:controllers users
此生成器将为您的项目添加设计控制器。您可以直接编辑源代码,根据您的要求修改所需的控制器。
答案 1 :(得分:0)
我最终做的是,在我的控制器的create
已经扩展了设计方法:
class Users::RegistrationsController < Devise::RegistrationsController
def create
params["user"] = session[:registration_params]
session[:registration_params].deep_merge!(user_params)
@user = User.new session[:registration_params]
if @user.valid? && last_step
params["user"] = session[:registration_params]
configure_sign_up_params
super
end
end
end