以下のparameter
でtrue/false
の部分を取得して整形したい
許可したいparams
<ActionController::Parameters {"schedules"=>{"1"=>{"id"=>"true"}, "2"=>{"id"=>"false"},"3"=>{"id"=>"false"},...},
"controller"=>"foo", "action"=>"update", "event_id"=>"777"} permitted: false>
ネストするStrong Parametersの書きかた
この記事を参考にschedulesをネストの中身の全て許可する方法としては
params.permit(schedules: { 1: [:id], 2: [:id], .....}
こんな感じ?ちょっとヘンテコすぎる...(笑)
解決法
色々探してみたけれど、rails guideにこんな表記
#キーが整数のハッシュは異なる方法で処理されます。これらは、あたかも直接の子オブジェクトであるかのように属性を宣言できます。
#以下のデータを許可
{"book" => {"title" => "Some Book",
"chapters_attributes" => { "1" => {"title" => "First Chapter"},
"2" => {"title" => "Second Chapter"}}}}
-> params.require(:book).permit(:title, chapters_attributes: [:title])
というわけで、key
が整数のときは子オブジェクトのkey
で直接許可できるんですね
なので僕のコードも
params.permit(schedules: [:id])
これで済んでしまうというわけですね