##初めに
####なぜこの記事を書きたかったのか
requireは何を指定してるのかわからなくなったので、ストロングパラメータの再確認をするためにメモしたい!
####環境
・Macbook Air (Retina, 13-inch,2019)
・プロセッサ 1.6GHz デュアルコアIntel Core i5
・メモリ 8GB 2133 Mhz LPDDR3
・MacOS Big Sur バージョン 11.5.2
####記事の目次
1)ストロングパラメータってなんぞ?
2)どうやって使うの?
3)最後に
##ストロングパラメータってなんぞ?
controller内に新たに作成したメソッド名に取得したい情報を指定することができる
##どうやって使うの?
####1)controller内のアクションの命令式にストロングパラメータに使うメソッド名を追加する。(今回はorder_paramsとする)
(例えば)通販サイトにuserが商品の届け先を記入しなければならないページがあるとする。その個人情報を保存するときcreateアクションで処理する。商品の届け先の記入欄に郵便番号(zip_code)、住所(adress)、ビル名(buiding_name)、電話番号(phone_number)のみをDBに保存したい場合
(コントローラー)
def create
@purchase_order = PurchaseOrder.new(order_params)
end
####2)追加したメソッドに保存したいカラムを指定する
(書き方)
private
def メソッド名
params.require(:どこのハッシュを参照すればいいか判断).permit(:requireで指定した場所のなんのカラムの取得したいか指定).merge(他に追加したいハッシュを指定)
end
(コントローラー)
def create
@purchase_order = PurchaseOrder.new(order_params)
end
private
def order_params
params.require(:purchase_order).permit(:zip_code, :address, :building_name, :phone_number).merge(user_id: current_user.id)
end
※require(:purchase_order)でpurchase_order内の配列を指定
※permit(:zip_code, :address, :building_name, :phone_number)でカラム内の郵便番号、住所、ビル名、電話番号を保存してくださいと命令できる
※merge(user_id: current_user.id)でuser情報も取得してくださいと設定
##最後に
実際実装をするとき、修正&エラーで作成してもっとも近い正解を探して制作できるけど、実際こういう場で自分が作業したことを言語化するとわかった気でいただけなんだなって認識させられちゃう(汗)反復練習と言語化が大事だ!
ココまで読んでくださいましてありがとう!