Ruby on Rails: form_withとストロングパラメーターの実験のまとめ...chapter11-2
1. permit(:title, :main)あり
https://gyazo.com/3bc5de765b8d6bcce951069d338671c5
params.require(:tweet).permit(:title, :main)ではmodelを設定する必要がある。
また、不要な情報がある場合は外されて保存される。
2.permit(:title, :main)なし
https://gyazo.com/5d0aa5f8ca75e72be950c29e2a1a7413
requireありでpermitなしでは保存はできない。
3.require(:tweet)なし
https://gyazo.com/5506a8ad1d2a4a647fb72cb85b0f36c1
requireなしではurlは必ず必要でmodelは不要。
urlとmethodを設定すれば保存はされる。
また不要情報は外されて保存される。
4.ストロングパラメーターなし
https://gyazo.com/8a3fc3d1546bfc6608ceb30e9a99f263
ストロングパラメーターなしでは保存されない。
ストロングパラメーターは送られて来た情報(ビューから送られて来た情報)が信用できるか不要な情報が入っていないかを確認する検問的な役割を果たしている。
もし不要な情報が含まれる場合は外されて保存される。
ストロングパラメーターで設定されているrequireは必要とする、permitは許可するという意味でrequireはあるがpermitがない場合は保存ができない。
またストロングパラメーターがない場合も保存できない。
requireにモデルを設定しフォーム(form_with)でmodelを設定することでフォームで送った内容がそのモデルのものなのかを判断できる。
そしてrequrieで設定したモデルの中で保存したい情報を保存するためにpermitで設定しなければならない。
参照:https://qiita.com/ozackiee/items/f100fd51f4839b3fdca8
参照:https://skillhub.jp/courses/157/lessons/829
参照:https://pikawaka.com/rails/permit
編集機能の実装でform_withでmethodとmodelを設定しなかったのでエラーが続出して苦労しました。
原因はフォームの情報をPOSTデータで送っているみたいでnewではmethodの設定は必要なかったが、editではmethodを使って設定しなければならなかったみたい。
あとrequireを設定してmodelを設定してなかったので「tweetが空だぞ」とエラーが出ていました。
これを例えるなら山田太郎さんが参加できるオフ会があったとします。
そのオフ会は会場前で名札を提示する必要がある。(require)
さらに会場で会員証明書を提示する必要がある。(permit)
名札をつけて来たが名前を書いてなかったから門前払いをくらっている状態だった(名前書いてこい=名札が空だぞと怒られている状態)。
実験してみてrequireとmodelの関係性やmethodの設定など理解が深まった気がします。
また何かあったら実験しながら勉強を進めていこうと思います。
以上です。