【基本】
deviseというgemを使えば、よくあるログイン機能を簡単に作成できます。
①
Gemfileに
Gemfile
gem 'devise'
を記述し
bundle install
を実行
その後、サーバーを再起動。
rails s
なぜなら、サーバーを起動した際にgemが反映されるからです。
②
rails g devise:install
で設定ファイルを作成。
③
rails g devise user
でモデルを作成し
rails db:migrate
を実行
自動で追記される↓
config/routes.rb
Rails.application.routes.draw do
devise_for :users
#以下略
こいつのおかげで必要なルーティングが一気に生成され、current_userやuser_signed_in?などのヘルパーメソッドが使えるようになる。
④
rails g devise:views
でビューファイル作成。
以上!
【応用】
新規登録時にニックネームを登録できるようにする。
デフォルトで登録できる情報は、メールアドレスとパスワードの2つです。
ユーザーのニックネームも登録できるようにしたいものです。
カラムを追加する方法を見ていきましょう。
①
rails g migration AddNicknameToUsers nickname:string
でマイグレーションファイルを作成し
rails db:migrate
を実行
②
deviseでログイン機能を実装した場合のパラメーターの受け取り方は通常とは異なります。
app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
before_action :configure_permitted_parameters, if: :devise_controller?
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:nickname])
end
end
難しいことが書いてありますが要約すると、
nicknameカラムの情報をパラメータとしてサーバーに送信することを許可します。
ということです。
これで新規登録時に、ニックネーム・メールアドレス・パスワードの3点が登録できるようになります。
ではまた!