LoginSignup
0
0

More than 3 years have passed since last update.

deviseユーザー登録

Posted at

1 deviseをインストール

ユーザー登録機能を実装するためには、deviseというgemをインストールします。

  1. Gemfileで gem 'devise'を追加

  2. ターミナルでbundle install

  3. ここでrails s でサーバー起動しないと反映されない

  4. rails g devise:install で設定ファイルを作成

2 ユーザーモデル+テーブルを作る

ここで注意したいのが普通のモデルを作る時と同じではないということです。

モデル作成

  • ターミナルで rails g devise user と入力(この時ルーティングが自動設定され、マイグレーションファイルも生成される)

  • db→migrate→2020〜のファイルにてテーブルに追加するカラムやカラムの型を記載する。

class DeviseCreateUsers < ActiveRecord::Migration[6.0]
  def change
    create_table :users do |t|
      t.string :name, null: false
      t.string :email,              null: false, default: ""
      t.string :encrypted_password, null: false, default: ""

テーブル作成

  • ターミナルでrails db:migrate コマンドでテーブル作成

3 サインアップ(新規登録)

サインアップ時に入力する情報はパラメーターとしてサーバーに送信される。
通常コントローラーのストロングパラメーターで受け取るパラメーターを制限しているが、deviseの時は書き方が違う。

devise_parameter_sanitizerメソッド

deviseのUserモデルに関わる「ログイン」「新規登録」などのリクエストからパラメーターを取得できる。
下の記述は、サインアップの時にニックネームというキーのパラメーターを許可する記述。実際ニックネームの後にも新規登録時に必要な項目が追記される。ここでのpermitの中の引数は普通のパラメーターの時と違うので注意!


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

  private

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

初めのbefore_actionはdeviseによる処理であればconfigure_permitted_paramatersメソッドを実行するという設定。丸々必要なのだが、この辺は調べると出てくるので丸々覚える必要はない

これにより新規登録時の情報がテーブルに保存できている。

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