设计注册定制

时间:2016-12-25 19:17:22

标签: ruby-on-rails devise

我正在进行多步注册过程。我将值存储在session上。在最后一步,我想打电话给DeviseRegistration#create。我已经正确配置了devise_scope,我可以通过DeviseRegsitration#create方法接听来电。

我遇到的主要问题是它使用POST请求中提交的参数而不是我session var上的参数。

我尝试过这样的事情:

request.params = ActionController::Parameters.new session[:registration_params]

我已阅读ActionDispatcher课程,但我无法确定如何做到这一点。

2 个答案:

答案 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