カテゴリー:
Rails
タグ:
 Rails devise

このエントリーをはてなブックマークに追加
更新日時:
2016年12月06日(火)
作成日時:
2016年12月06日(火)

前の記事 / 次の記事

大きく変わったところはないんだけど、
自分が前にやった時と微妙にセットアップの仕方が変わっていたので折角なのでメモ。

devise

1.gemのインストール

vi Gemfile
gem 'devise'
$ bundle

2.deviseの設定ファイルを生成

rails generate devise:install

3."2"で設定しきれない分を手動で設定

ルートパスの設定、好きなところに。

vi config/routes.rb
root "application#index"

メールサーバーの設定、開発環境では本物を使わずに済ます設定。
本当にメールを送信して確認したい場合は本物の設定を入れる。

vi config/environments/development.rb
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }

フラッシュメッセージの設定

vi layouts/applicaton.html.haml
- if notice
  %p= notice
- if arlert
  %p= alert

4.ビューの設定

ビューをカスタマイズしたい場合はビューを生成してそれを編集する

全て、例えば一般ユーザーと管理ユーザー、で同じビューを使う場合

rails generate devise:views

それぞれ、例えば一般ユーザーと管理ユーザー、で別々のビューを使う場合

rails generate devise:views users
rails benerate devise:views admins

5.コントローラーの設定

コントローラーをカスタマイズしたい場合はコントローラーを生成してそれを編集する

全て、例えば一般ユーザーと管理ユーザー、で同じコントローラーを使う場合

rails generate devise:controllers

それぞれ、例えば一般ユーザーと管理ユーザー、で別々のコントローラーを使う場合

rails generate devise:controllers users
rails benerate devise:controllers admins

6.StrongParametersの設定

Userもでるに独自カラムを設定した場合、
例えばデフォルトで生成されるUserモデルに名前や住所といったカラムを持たせ、
それをユーザーに入力させる場合、deviseのデフォルトではそれらのカラムが
StrongParametersに設定されていないのでdbに投入することができない。

解法

class ApplicationController < ActionController::Base
  before_action :configure_permitted_parameters, if: :devise_controller?

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:sign_up, keys: [:username])
  end
end

書き方は他にいくつかあるので好きな方法で。

7.確認

ApplicationControllerでauthenticate_user!してログインページ飛ばされて
sing_upページのリンクからsign_upページに遷移して登録してログインできたら
大方正常に設定が完了したと思って良いかと。

class ApplicationController < ActionController::Base
  before_action :configure_permitted_parameters, if: :devise_controller?
  before_action :authenticate_user!

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:sign_up, keys: [:username])
  end
end