Just do IT

思うは招く

Railsのストロングパラメーターは何をしているのか

Railsでよく見るストロングパラメーター。

~
  private

    def session_params
      params.require(:session).permit(:email, :password)
    end
end

フォームから、リクエスト時のパラメータをチェックする。この場合、{ session: {...}}であるかどうかをまず調べている。

具体的に見てみるとわかりやすい。

~
  private

    def session_params
      puts "!" * 30 #追記
      pp params #追記
      puts "!" * 30 #追記
      params.require(:session).permit(:email, :password)
    end
end

pp paramsの結果。

<ActionController::Parameters {"authenticity_token"=>"geLk2zy+P81jdGKQV52cqbuCH8SxXsp6RfuyV0l3SSwAggyOjFqL3KEVK/ibvJrqCvhqQz7qxEVnwcB9XJ/s5g==", "session"=>{"email"=>"paul@example.com", "password"=>"testtest"}, "commit"=>"ログイン", "controller"=>"sessions", "action"=>"create"} permitted: false>

session の email と password をストロングパラメーターで取得しているのがわかる。

params.require(:session)の session の部分はコントローラー名を単数形にしたものが入ることに注意。モデル名ではない。