ログイン機能を簡単に実装できるRailsのgem「devise」を紹介します。
deviseの使い方を知りたい、Railsにくわしくなりたい方は参考にしてください。
自分に合う仕事や求人などは以下の診断とサイトでチェックしましょう!
18のタイプから自分の性格を診断してもらえます。
僕は、「独創性」「決断力」「挑戦心」「自己信頼」「親密性」の5つでした。これ、かなり当たってましたw
仕事での強みと適職がわかる「グッドポイント診断」がかなり参考になった https://t.co/1WrpPOGkow pic.twitter.com/oDCkYxcXNi
— らふらく更新用@ブログで生活しています (@guppaon1) 2017年9月26日
まずインストール
まずは、gemをいれる。
gem install devise
bundle install
ジェネレーターを起動。
rails g devise:install
rails generate devise モデル名
モデル名は、自分が適用したい名前を入れて下さい。
会員登録に使われることが多いので、たいていは User が使われる。
スポンサーリンク
生成されたものを見てみる
:confirmable はメール送信による認証です。不要な場合は省略して下さい。
その他オプションについては、こちらを参考に。
メール送信の場合は、config / environments / development.rb も編集しておきましょう。
こちらを追加。
モデルについてみて見ると、こんな感じでマイグレートファイルが生成されている。(一部のみ掲載)
スポンサーリンク
ルーティング設定
こちらを追加。
devise_for :users
あとは、ログイン後のリダイレクト用に、rootも追加。
root 'home#index' #ここは自分のrootパスを
私の場合、home#index をrootにしたので、これのためにcontrollerをつくりました。
rails g controller home index
あとは好きなように views/home/index.html.erb や controller を編集して下さい。
rake db:migrate
も忘れずに!
ユーザー認証を導入
ユーザー認証を導入するために、各コントローラーに
before_filter :authenticate_user!
を追加。
これで、ログインしていないユーザーのアクセスをはじくことができる。
noticeを表示させる
ログイン失敗などのアラートを表示させるためにviewを編集しましょう。
app/views/layouts/application.html.erb に
<p class="notice"><%= notice %></p> <p class="alert"><%= alert %></p>
を追加。
ログイン、新規登録機能は完成
こんな風に適当な(登録されていない)メールアドレスを入力すると、
有効なやつを入力して下さいと注意されます。
さらに、ログインしていない状態でURLにアクセスしようとすると、
ログイン、または新規登録する必要があります。という警告が。
ログインユーザーの情報にアクセス
ログインユーザーの情報を取得したい場合は、
current_user
を使いましょう。
current_ のあとには、モデル名がきます。
例えば、devise g でmemberを作成している場合は、
current_member
で取得することができます。
例えば、ログインユーザーのidを取得したい場合は、
current_user.id
でidを取得することができます。
Railsで便利!gemのdeviseまとめ
数行書くだけでこんなに立派なログイン機能を実装することができました。すばらしいですね。
RailsでWebサービスをつくる際は、ぜひdeviseを利用してみて下さい。
18のタイプから自分の性格を診断してもらえます。
僕は、「独創性」「決断力」「挑戦心」「自己信頼」「親密性」の5つでした。これ、かなり当たってましたw
仕事での強みと適職がわかる「グッドポイント診断」がかなり参考になった https://t.co/1WrpPOGkow pic.twitter.com/oDCkYxcXNi
— らふらく更新用@ブログで生活しています (@guppaon1) 2017年9月26日