■
deviseまとめ
・gem devise 導入
・gem devise install
・
・新規登録とログインのリンクが完成
・before action をルーティングに記載
・DB作成
・モデル作成し・マイグレート編集(カラムの型・名前に注意)
・erb をhamlに変更
・devise registration に会員登録画面のビュー作成(form forで次のアクションに飛んでくれる)
・devise session ログイン画面も実装
通常ここで完了
ウィザード形式で住所登録させて保存するとき
・住所モデルの作成
・マイグレートでカラム作成してDBマイグレート
・アソシエーション・バリデーション設定
・deviseの管理下にusersコントローラー作成
rails g devise:controllers users
・ルーティング変更
ails.application.routes.draw do devise_for :users, controllers: { registrations: 'users/registrations', } root to: "home#index" end
devise registrationを継承しているusersコントローラー作成
・newアクションのファイルを作成(住所登録ね)
・createアクションも設定
1ページ目の内容のバリデーションチェック・セッションに保持させる。
class Users::RegistrationsController < Devise::RegistrationsController # 省略 def create @user = User.new(sign_up_params) unless @user.valid? flash.now[:alert] = @user.errors.full_messages render :new and return end session["devise.regist_data"] = {user: @user.attributes} session["devise.regist_data"][:user]["password"] = params[:user][:password] @address = @user.build_address render :new_address end # 省略 protected # 省略 end
スコープ
devise_for :users, controllers: { registrations: 'users/registrations' } devise_scope :user do get 'addresses', to: 'users/registrations#new_address' post 'addresses', to: 'users/registrations#create_address' end root to: "home#index" end
・住所登録のビュー作成
住所のバリデーション
clearでセッション削除
ログイン完了画面作成
お疲れ様でした、
ウィザード形式、まる覚えしなくてもいいですよね。