3
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.

ウィザード形式でのユーザー登録の仕方

Posted at

この記事は自分用のアウトプットになります。
プログラミングスクールの最終課題でフリマサイトを作成した際にユーザー登録の時にユーザー情報と住所の登録を同時にする方法になります。

初めにユーザー管理のためにdeviseを持ちます。Gemfileに記述しましょう。

Gemfile
gem 'devise'

記述をしたらターミナルでrails g devise:install

rails g devise:install

コマンドを実行します。

次にdeviseのデフォルト状態でのログイン機能を実装していきます。

taminaru
rails g devise user

コマンドを入力するとUserモデルとマイグレーションファイルが作成されます。
作成されたマイグレーションファイルを修正し必要なカラムなどを入力してください
下記のカラムとタイプは参考にしてください 

Column Type Options
nickname string null:false
email string null: false、unique:ture
password string null:false
password_confiramation string null:false
family_name string null:false
first_name string null:false
hurigana_family_name string null:false
hurigana_first_name string null:false
birth_year integer null:false
birth_month integer null:false
birth_date integer null:false
マイグレーションファイルを修正したらrails db:migrateをしましょう
次に、Appilication Controllerを修正します。カラムを追加したためです。
class ApplicationController < ActionController::Base
  before_action :configure_permitted_parameters, if: :devise_controller?

  protected

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

コントローラーに記載ができたらモデルに必要なバリデーションを設定しておきましょう

:User.rb
class User < ApplicationRecord
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable

  validates :nickname, presence: true
  validates :email, presence: true
  validates :password, presence: true
  validates :family_name, presence: true,format: { with: /\A[一-龥]+\z/, message: 'は漢字を入力してください'}
  validates :first_name, presence: true,format:{ with: /\A[一-龥]+\z/, message: 'は漢字を入力してください'}
  validates :hurigana_family_name, presence: true,format:{ with: /\A[ぁ-んー-]+\z/, message: 'は全角平仮名を入力してください'}
  validates :hurigana_first_name, presence: true,format:{ with: /\A[ぁ-んー-]+\z/, message: 'は全角平仮名を入力してください'}
  validates :birth_year, presence: true
  validates :birth_month, presence: true
  validates :birth_date, presence: true

モデルにバリデーションを記載したら次はビューを作成していきます。

rails g devise:views

コマンドを入力をすることでdeviseに対応したviewsファイルが作成されます。
作成されたviewsファイルからビューを作成しましょう

#こちらはビューファイルと対応するページ

ファイルパス 機能
sessions/new.html.erb ログイン画面
registrations/new.html.erb ユーザ登録画面
registrations/edit.html.erb プロフィール情報変更画面
passwords/new.html.erb メール送信画面(パスワード変更用)
passwords/edit.html.erb パスワード変更画面
confirmations/new.html.erb メールによる認証を行う画面
unlocks/new.html.erb アカウントのアンロック画面

ひとまずここまでで終わります。
続きは次の記事に記載します。

3
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
3
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?