この記事は自分用のアウトプットになります。
プログラミングスクールの最終課題でフリマサイトを作成した際にユーザー登録の時にユーザー情報と住所の登録を同時にする方法になります。
初めにユーザー管理のために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 |
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 | アカウントのアンロック画面 |
ひとまずここまでで終わります。
続きは次の記事に記載します。