LoginSignup
33
28

More than 5 years have passed since last update.

Rails セッション管理でお手軽ユーザー管理

Last updated at Posted at 2015-07-05

Railsでは「devise」(gem)を使えば簡単にユーザーログイン機能を実装出来ます。そのため、それで十分楽なのですが、セッション管理(gemなし)で簡易ユーザー管理をやってみたので覚書程度に書いておきます。

仕様

  • ユーザーがサイト内にアクセスしてきたら、user_idを発行しセッションを残す。
  • セッション期限は1ヶ月の設定。
  • セッションのdeleteボタンでセッション削除。(user削除)

create

userテーブルを作成する。
その後、下記をapplication_controller.rb内に記述。
サイト内にアクセスしたら、ユーザー生成。

application_controller.rb
  before_action :login

  def login
    if session[:user_id].blank?
      user = User.create
      session[:user_id] = user.id
    end
    @user_id = session[:user_id]
  end

destroy

任意の場所に下記のアクションを設定し、routeを設定。

  def destroy
    reset_session
    user =User.find(@user_id)
    user.destroy
    redirect_to root_path
  end

セッション期限

下記を追記してセッションの有効期限を設定。

/config/initializers/session_store.rb
Rails.application.config.session_store :cookie_store, key: '_user_id_session', expire_after: 1.month

expire_afterが1ヶ月の有効期限。

補足

ちなみに、deleteした後にすぐにまた新しいuserが発行されます。
application_controller内に作成したloginアクションを任意のコントローラーに移し、deleteのようにrouteを設定すれば、user作成ボタンで作成し、user削除ボタンで削除するという仕様に変更も出来ますね。需要はなさそうですが、追記。

参考

Rails4での基本的なセッションの使い方
Railsでsessionの有効期限を設定

33
28
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
33
28