0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Rails]controllerのストロングパラメータとは

Posted at

##初めに
####なぜこの記事を書きたかったのか
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に保存したい場合

(下記の例用のテーブル)
sampletable.png

(コントローラー)
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情報も取得してくださいと設定

##最後に
実際実装をするとき、修正&エラーで作成してもっとも近い正解を探して制作できるけど、実際こういう場で自分が作業したことを言語化するとわかった気でいただけなんだなって認識させられちゃう(汗)反復練習と言語化が大事だ!

ココまで読んでくださいましてありがとう!

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?