私のモデル(document => field_instance => value)で深くネストされたJSONフィールドを通過させようとしています。私はdocumentationの誤解のため空のハッシュを使用していました。Rails 5では、JSONフィールドが強力なパラメータで動作しないようにしています。
許可!私が必要とすることをすることができますが、私は単にこれが開く大規模なセキュリティホールのためにparams.fetch(:document).permit!
をやることを避けようとしています。だから、二重に入れ子になったJSON値の 'parameter'の下で、どのような型の構造体も許可するにはどうしたらよいですか?
各instance_fieldは、必要なパラメータのリストを持っている特定のタイプを持っていますが、具体的なことの道なし:私は値と呼ばれるテキストの下に、単一の文字列を使用してテストしていて、「テキスト許可されていないパラメータ」を取得しています
ドキュメントのinstance_fieldごとに、そのJSONフィールドの下にあるすべてのパラメータを許可するように選択しました。ここで
は私のdocument_params方法である:
params.fetch(:document)
.permit(:structure_id, :field_instances_attributes => [
:value,
:document_id,
:field_id,
:value_attributes => {}
])
だから、私がここで間違って何をやっていますか?
さらに、各field_instanceには、フィールドの値が期待する正確な構造を認識するタイプがあります。各field_instanceの値の下で許可されるフィールドについて具体的にすることはできますか?
関連ログ:
service_1 | Parameters: {"utf8"=>"Ô£ô", "authenticity_token"=>" -- censored --", "document"=>{"structure_id"=>"1", "field_instances_attributes"=>[{"document_id"=>"0", "field_id"=>"1", "value_attributes"=>{"text"=>"asdf"}}]}, "commit"=>"Create Document"}
service_1 | Unpermitted parameter: text
service_1 | Unpermitted parameter: text
service_1 | #<FieldInstance id: nil, field_id: 1, document_id: nil, value: nil, created_at: nil, updated_at: nil>