0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

devise機能

Posted at

デバイズ機能を使うとユーザー管理がしやすくなる!

rails g devise user の命令をターミナル上で出すと、ログイン画面とサインアップ画面が生成される。
しかしビューファイルとして生成はしない!
これは、deviseのGem内に存在するビューファイルを読み込んでいるから!

そこで、deviseのビューファイルをコピーし、devise用のビューファイルを用意する。
命令としては rails g devise:views

すると、

app/views/devise/registrations/new.html.erb

app/views/devise/sessions/new.html.erb

2つビューファイルが出来上がるが、サインアップ画面が上、ログイン画面が下に対応する!
ファイル名が同じでもpathが違う

すでに作成されたテーブルの内容を変更する場合は rails g migration コマンドを行う
rails g migration Addカラム名To追加先テーブル名 追加するカラム:型

<サインアップ画面の編集>
・maxlengthオプション
→inputタグを生成するヘルパーメソッド

ストロングパラメーターの扱い
→deviseに関しても受け取れるパラメーターをコントローラーで制限する!
しかし、deviseの処理を行うコントローラーはGem内に記述されているので編集できない!
そこで、

①deviseのコントローラーにストロングパラメーターを反映する方法
②devise特有のパラメーターを取得する方法

が必要になる。

②devise特有のパラメーターを取得する方法
→devise__parameter_sanitizerメソッドを使う

private
def configure_permitted_parameters # メソッド名は慣習

deviseのUserモデルにパラメーターを許可

devise_parameter_sanitizer.permit(:deviseの処理名, keys: [:許可するキー])
end

→引数の部分が今までと違う
deviseの処理には、 :sign_in :sign_up :account_update などがある

ストロングパラメーターを追加するコードはapplication_controller.rb に記載する

(例)
private
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:nickname])
end

これは、sign_up(新規登録の処理)をする時、nicknameというキーのパラメーターを許可するもの!

このままだと、devise機能を使わない時も実行されてしまう(?)ので、ifというオプションを使う。

before_action :configure_permitted_parameters, if: :devise_controller?
デバイズに関するコントローラーの処理の時だけconfigure_permitted_parametersを実行する!

tweetsテーブルにカラムを追加する方法(すでにテーブルができている時)
→ rails g migration AddUserIdToTweets user_id:integer

→ rails db:migrate

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?