-1

我必须重写 create 方法的注册控制器,所以现在当用户注册时,它不再在创建帐户后自动登录,但我想保持这种行为。

目前我的创建方法如下所示:

   def create
     @user = User.new
     @user.attributes = params[:user]

     if cookies[:invcode]
        @user.inv_code = cookies[:invcode]
        cookies.delete :invcode
     end

     if @user.save
        redirect_to :root
     end
  end
4

2 回答 2

3

如果您使用类似sign_in @user或类似 Devise's 的方法sign_in_and_redirect,您可以在 create 方法的 @user.save 块中使用它。

于 2013-08-02T14:22:16.930 回答
0

你在用设计吗?如果是这样,

if @user.save
  sign_in_and_redirect @user, event: :authentication
end

或者,更好的是,只需从 Devises 的注册控制器中复制一些代码。

  # POST /resource
  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)
        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
于 2013-08-02T15:29:20.650 回答