ruby on rails/ストロングパラメータ

疲れた・・・。

昨日は約8時間ぶっ通しでプログラミングの勉強をして、家に帰るなり死にました。

 

いや、でもすごい充実感はある。

まだまだクローンアプリのレベルだし、手順をみながら作業してるから対してことはないんだけど、ちょっとずつものが出来上がってるのがね・・・。

頭痛に反比例する満足感があるね。

 

勉強していく中でこれは重要な概念だなと思ったものをひとつ書いていくよ。

 

privateメソッド

この先で説明するストロングパラメータの解説に必要になるのでこれも一緒に解説するよ。

簡単に言うと、それ以降に定義したメソッドはclassの外部から呼び出せなくなる。

これにより、classの外部から呼び出されてしまうとエラーを起こすメソッドもあるので、事前に防ぐことに繋がります。

 

ストロングパラメータ

指定したキーを持つパラメーターのみを受け取るようにするもののことです。

本当に簡潔に言っちゃうとこれだけの概念なんだけど、まぁイメージしづらいよね。

 

まず大前提として、データベースの中にこんなテーブルがあったとする。

id

name

title

text

1

プログラミング

初心者

備忘録

こいつはハッシュとして取り出すことができて、railsコンソールで出力すると

id: 1,
name: "プログラミング",
title: "初心者",
text: "備忘録",

こんな感じでキーを持ったハッシュとして出力される。

 

そこでこんなコードを書いてみた。

class TestController < ApplicationController

def test #test_paramsメソッドの返り値を出力
parameter = test_params
end

private #
def test_params #パラメータの中から、titleキーとtextキーのもを取り出す
params.permit(:title, :text)
end

end

 

この時の出力結果はこんな感じになる。

{title: "初心者", text: "備忘録"}

この取り出したハッシュのことをストロングパラメータと言います。

 

つまり、あるハッシュがあった時に、必要なバリューだけを取り出してハッシュとして出力したものがストロングパラメータと言います。

特に、この元になるハッシュはパラメータと言う、リクエストと一緒に送られてくるものが対象となります。

 

サイト上でユーザーが本のレビューをするために、本のタイトルや感想文をサイトに用意された枠に打ち込むことってあると思います。

その情報はパラメータと呼ばれて、リクエストと一緒に送られてきます。

その中から必要な情報を抽出してしまおう、と言うことです。

 

目的

それの何がいいんだって話になるよね。

目的としては

・ビューからコントローラに値を安全に渡すこと。

・フォームの値をそのまま渡すとセキュリティ上危険なので、許可したものだけを渡すように設定する。

と言うところになります。

サイトからクレジットカード情報とか打ち込んだときに、その値を勝手に変数に入れて別のところに表示・・とかやると危ないよね。

そういうのを防いだりするみたいです。

privateメソッドも同様で、重要な情報が入力されてハッシュとして保存するけど、

煩雑になっていくサイト構成の中で誤ってクラス呼び出しされてしまったり・・・

ということが主目的になるようです。

 

理解しきれていないから書いてみたけど、ちょっと自信ない!

もし間違ってるところあったら指摘してくだされ・・・。