4 - 강력한 매개변수입니다 네스트된 객체에는 - 레일

39 i& ve got a 질문이예요 비교적 간단합니다. 하지만, t # 39 haven& 해결책을 찾으면 부진했다.

그래서 내가 here& # 39 는 JSON 의 문자열이어야 보냅니다 서버:

{
  "name" : "abc",
  "groundtruth" : {
    "type" : "Point",
    "coordinates" : [ 2.4, 6 ]
  }
}

새로운 방법을 사용하여 허가 I& # 39, ve got:

params.require(:measurement).permit(:name, :groundtruth)

하지만 이 오류가 없는 던지는 대신 'null' 그라운트루스 map_layer 만든 데이터베이스 입력 값.

만약 내가 그냥 세트:

params.require(:measurement).permit!

39 에 저장된 모든 get& 예상대로, 물론 이 제공하는 보안 죽일겁니다 강력한 매개변수입니다.

39, ve i& 사용한 예를 찾을 수 있도록 한 것이 아니라, 어떻게 솔루션뀉뀉뀉뀉 어레이에는 네스트된 객체에는. 이 때문에 매우 일반적인 览侩 荤례 어떻게든 해야 할 수 있어야 합니다. 그래서, 어떻게 작동합니까?

질문에 대한 의견 (3)
해결책

사운드 때문에 같은 속성을 지정할 수 있도록 해야 하는 경우에는 홀수입니다 네스트된 속성뿐 내의 네스트된 객체에는 어레이입니다. 네 경우엔 될 것입니다.

  • 업데이트 * 권고하는 대로 @RafaelOliveira
params.require(:measurement)
      .permit(:name, :groundtruth => [:type, :coordinates => []])

반면 랩 (wrap it 그럼 이렇게 하시스 내의 여러 객체에는 확인표시를 네스트된

params.require(:foo).permit(:bar, {:baz => [:x, :y]})

br /&gt <;

레일 여기있을 붽뎄 실제로 아주 좋다고 합니다. http://api.rubyonrails.org/classes/ActionController/Parameters.html # 내가 방법을 허가

자세한 설명, 구현 '허가' 와 '' 자체가 strong_parameters 바라볼 수 있습니다. https://github.com/rails/rails/blob/master/actionpack/lib/action_controller/metal/strong_parameters.rb # L246-L247

해설 (4)

내가 찾은 이 제안을 유용한 내 경우:

  def product_params
    params.require(:product).permit(:name).tap do |whitelisted|
      whitelisted[:data] = params[:product][:data]
    end
  end

이것 [링크] [1] 에 대해 # 39 의 Xavier& 깃허브.

이 전체 params [측정선에] [그라운트루스] 객체에는 외곽진입 허용 목록.

당초 사용하여 질문을합니다 속성:

  def product_params
    params.require(:measurement).permit(:name, :groundtruth).tap do |whitelisted|
      whitelisted[:groundtruth] = params[:measurement][:groundtruth]
    end
  end

[1]: https://github.com/rails/rails/issues/9454 # issuecomment-14167664

해설 (4)

네스트된 객체에는 허용.

params.permit( {:school => [:id , :name]}, 
               {:student => [:id, 
                            :name, 
                            :address, 
                            :city]},
                {:records => [:marks, :subject]})
해설 (0)

레일 경우 5 때문에 새로운 해시보다 표기법: '파람세스페르미트 (이름, 그라운트루스: [유형, 위치좌표: []]) '가 제대로 작동합니다.

해설 (0)