コントローラのupdate
アクションの先頭にあるbinding.pry
に入れました。そのブレークポイントに達すると、params[:foo_bar]
を入れてparams
ハッシュを調べます。ここで私が得るものです:なぜ強いパラメータが含まれているのですか:偽
<ActionController::Parameters {"utf8"=>"✓", "_method"=>"patch", "authenticity_token"=>"123==", "foobar"=><ActionController::Parameters {"barbazz_attributes"=>{"start_date"=>"08/27/2016", "end_date"=>"08/29/2016", "id"=>"89"}, "bazz_id"=>"3", "abc_id"=>"330", "bazzbazz_attributes"=>{"0"=>{"_destroy"=>"1", "city_id"=>"1669", "id"=>"26"}, "1"=>{"city_id"=>"1681", "id"=>"27"}, "2"=>{"city_id"=>"1672"}}} permitted: false>, "cat_id"=>["1", "1", "1"], "commit"=>"Update FooBar", "controller"=>"foo_bars", "action"=>"update", "id"=>"52"} permitted: false>
、私はいくつかの属性をホワイトリストに登録していないので、permitted: false
があると仮定。私は属性を見て、私はすべてをホワイトリストにしたように見えます。
私はRails 5を使用していますが、それが何らかの違いがある場合は、
質問:強いパラメータが返される理由を簡単に確認するには、params: false
を入力してください。
paramsを許可するコードを教えてください。通常、これは名前を持つメソッドです: 'foobar_params'とし、' params'から直接ではなく、このメソッドを通して許可されたparamsにアクセスします。それはたぶんあなたが許可されている偽を見ている理由です。 easietの方法は、ソースコードを読むことです:https://github.com/rails/strong_parameters/blob/master/lib/action_controller/parameters.rb#L42、 'permitted = false'はデフォルトで' permit!すべてを許可するが、それは強いパラメーターの目的を破る。 – Leito