已经登录如何覆盖用户会话+设计+ rails

时间:2017-09-30 05:01:55

标签: ruby-on-rails session devise

我正在使用Devise进行身份验证。我已经登录到site.After登录后创建用户公司。如何销毁当前会话并为新创建的用户创建新会话。

请查看代码。

----> sessions_controller.rb

class Users::SessionsController < Devise::SessionsController
  # before_action :configure_sign_in_params, only: [:create]

  # GET /resource/sign_in
  # def new
  #   super
  # end

  # POST /resource/sign_in
  # def create
  #   super
  # end

  # DELETE /resource/sign_out
  # def destroy
  #   super
  # end

  # protected

  # If you have extra params to permit, append them to the sanitizer.
  # def configure_sign_in_params
  #   devise_parameter_sanitizer.permit(:sign_in, keys: [:attribute])
  # end
end

----&GT;的routes.rb

 Rails.application.routes.draw do

  devise_for :users, controllers: {
          sessions: 'users/sessions'
        }
  root to: "companies#index"

  resources :companies do
  end
  resources :company_users do
  end

end

----&GT; companies_controller

def create
    @company = Company.new(company_params)
    respond_to do |format|
      if @company.save
        format.html { redirect_to @company, notice: 'Company was successfully created.' }
        format.json { render :show, status: :created, location: @company }
      else
        format.html { render :new }
        format.json { render json: @company.errors, status: :unprocessable_entity }
      end
    end
  end

我在这里创建我的用户和公司。完成此操作后,我想为这个新创建的用户创建会话。

欢迎任何建议,请给出具体答案。非常感谢。

1 个答案:

答案 0 :(得分:1)

据我所知,贵公司有很多用户。如果你想登录最近创建的公司的第一个用户,你可以做一些像

这样的事情

reset_session sign_in @company.users.first

创建公司后

reset_session是一个rails方法,它会删除当前会话,而sign_in object是一个可以用来以任何用户身份登录的设计方法。

这应该有所帮助。