テックキャンプ53日目

kobasaです(´ω`*)帰ってきて夕飯食べたら眠くなったので、今日は朝活に挑戦してみました!
眠いはずなのに起きられるか気になって寝れん(´・ω・`)
10時就寝?〜3時起きくらいで6時まで勉強。仕事中睡魔やばいかもw

53日目の勉強内容

before_action

コントローラーに記述しアクション実行前に指定したメソッドを実行する。

onlyオプション:指定したアクションのみ実行。共通の処理をまとめるときに使用。
exceptオプション:指定したアクションを除いて実行。indexにリダイレクトするメソッドを実行するときはexceptにindexを指定しないと無限ループする。

# 例)
before_action :set_tweet, only: [:edit, :show]
before_action :move_to_index, except: [:index, :show]

deviseのテーブルに追加したカラムがパラメータを受け取れるようにする

deviseのコントローラーはGem内にあるため直接編集できないのでapplication_controller.rbに記述する。

class ApplicationController < ActionController::Base
  before_action :configure_permitted_parameters, if: :devise_controller?
  # 全てのコントローラーに処理を実行する前に指定したメソッドを実行させる。
  # ifオプション :メソッド名 返り値がtrueのときのみ指定したメソッドを実行。
  # devise_controller? deviseのコントローラーかどうかを判断するdeviseのヘルパーメソッド。

  private
  def configure_permitted_parameters
    # deviseに新たに定義するメソッドの慣習名
    devise_parameter_sanitizer.permit(:sign_up, keys: [:nickname])
    # devise_parameter_sanitizer.permit(:deviseの処理名, keys: [:許可するキー(カラム名)])
  end
end

deviseの処理名には下記の種類がある

:sign_inサインイン(ログイン)処理を行うとき
:sign_upサインアップ(新規登録)を行うとき
:account_updateサインアップ(新規登録)を行うとき

コメント

タイトルとURLをコピーしました