如何在创建帐户后自动为用户签名?

时间:2013-08-02 14:03:38

标签: ruby-on-rails ruby

我不得不覆盖create方法的注册控制器,所以现在当用户注册它时,在创建帐户后不再自动签名,但我想保持这种行为。

目前我的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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

你在使用Devise吗?如果是的话,

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

或者更好的是,只需复制Devises'registration controller中的一些代码。

  # 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