【rails】deviseを使ったuser管理機能の実装


gemのdeviseを使って、サインアウトやサインインなどの機能を追加する。

  • Gemfileに"devise"を記載
  • bundle install
  • rails g devise:install(deviseの設定ファイルをrailsアプリケーションにインストールするコマンド)
  • rails g devise User(モデルの作成)
  • rake db:migrate(migrationfileの読み込み)

http://localhost:3000/users/sign_in 
この時点で最低限のログインページの実装

  • rails g devise:views user (deviseに対応してviewの作成)
  • rails g devise:controllers user(deviseに対応してcontrollerの作成)

deviseで使用できるメソッド(モデル名にuserを指定している場合)

メソッド 機能
before_action :authenticate_user! コントローラーに設定して、ログイン済みユーザーのみにアクセス許可をする
user_singed_in? ユーザーがサインしているかを判定する
current_user サインインしているユーザーを取得する
user_session ユーザーのセッション情報にアクセスする

before_action :authenticate_user!

コントローラーの先頭に記載することで、処理が行われる前にログインしているかを判別させ、ログインユーザー以外のアクセスができないように設定します。