rails学習中に突如現れた「ストロングパラメータ」。パワーワード感のあるこの概念を、かなり自己流の解釈で書き留めておきます。
以下該当コード。
20~22行目
Tweet.create「Tweetモデルのテーブルに情報入れて保存するやで。内容は任せるわ。tweet_params、まとめといて」
tweet_params「はい!」
24~27行目
tweet_params「リクエスト側から受け取ったデータ(params)で、保存するのどれ?」
require「tweetモデルの情報ください」
permit「中身チェックするから待って」
name「nameです」
permit「通れ」
image「imageです」
permit「通れ」
text「textです」
permit「通れ」
email「emailです」
permit「帰れ!」
email「……」
permit「この3つあげる(:name, :image, :text)」
require「ありがとうございます。tweet_paramsのカバンに入れておきましょう」
tweet_params「できました!」
Tweet.create「サンキュ。テーブルにしまっとくわ。」
こんなイメージ。間違ってたら指摘お願いします
追記
requireメソッドって何者?なんで必要なの?
・もしもrequireメソッドがいなかったら
tweet_params「フォームから来たデータください!」
permit「……」
tweet_params「あれ?」
permit「モデル、指定してくれないと仕事できない」
tweet_params「えぇ……」
そもそも、paramsの中にはモデルが付与されています。
一番上の行、model: @tweet のところがそれ。
フォームに情報が入力された時点で、tweetモデルという入れ物のなかに、それぞれ値がぶちこまれます。
このモデルをキーで指定するのがrequireメソッドの役目。
require「tweetモデルという入れ物を探します」
permit「じゃあその入れ物の中から必要な情報だけ持ってきます」
tweet_params「ありがとうございます。その情報を僕が持ち運びます。しかもプライベートメソッドで記述しているので内容は僕しか知りません」
こうして、いつでも呼び出せるtweet_params君が出来上がります。めでたしめでたし。