deviseでユーザログイン機能を実装
以下を参考にさせていただきました。
Railsのログイン認証gemのDeviseのインストール方法 - Rails Webook
deviseの導入
Gemfileにデバイスを追加してgemをインストールします。
# Gemfile gem 'devise'
$ bundle install
次にデバイスの設定ファイルたちをインストールします。
$ rails g devise:install
ここから初期設定のガイダンスに従って5つの設定を行っていきます。
- 以下のようにメール設定用の設定を追加。
# config/environments/development.rb config.action_mailer.default_url_options = { host: 'localhost:3000' }
- root_urlを設定
ログアウト時のリダイレクト先にroot_urlを使っているので、ここでroot_urlが設定されてないといけないとのこと。
僕はhome#indexをルートにした。
- アラート部分を作っておく
これはマストなのかわからないけど、ログイン時にログインしました、とかログアウトしました、みたいな。
application.html.erb
のヘッダーにあたるとことかに書いとけばいいと思われ!
<p class="notice"><%= notice %></p> <p class="alert"><%= alert %></p>
これで初期設定はおわり!簡単!
Userモデル作成
ということでここからdeviseを使ったモデルを作成していきます。
$ rails g devise User
そしてdbのマイグレーションファイルを必要に応じていじります。他にも必要なカラムがあれば追加。
次にログインのボタン等を実装します。以下は自分がslimで書いた例です。
doctype html html head title TITLE = stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true = javascript_include_tag 'application', 'data-turbolinks-track' => true = csrf_meta_tags body h1: a href="/" Sugukari header nav - if user_signed_in? Login user: strong = current_user.email br = link_to 'プロフィール変更', edit_user_registration_path span> | = link_to "ログアウト", destroy_user_session_path, method: :delete - else = link_to "サインイン", new_user_registration_path span> | = link_to "ログイン", new_user_session_path / User Login Notification p class="notice" = notice p class="alert" = alert = yield
これで完成です!ユーザ系の一通りの機能が使えます。
めっちゃ簡単...!!