여기에 코드입니다 :몽고이 (Mongoid) : 질량 할당으로 정의되지 않은 필드가 생성되는 것을 막는 방법?
class M
include Mongoid::Document
field :name
end
params = { name: "foo", age: 20 }
M.create(params)
#=> #<M name: "My Name", age: 20>
공지 사항 age
것을 정의되지 않은, 아직이 저장되었습니다.
악의적 인 사용자가 몰래 수있는 큰 문자열로 어떤 POST의 매개 변수와 알 수없는 필드를 추가 할 수 있기 때문 (서비스 거부의 잠재적 소스) 문제가있다. (예를 들어 name=foo&bogus=#{'x'*1000000}
)
지금까지, 나는 할 수 없었다 attr_accessible
을 찾으십시오. 그러나 모든 모델에서 항상 field
과 attr_accessible
에 동일한 필드 이름을 유지해야하므로 Mongoid에는별로 좋지 않습니다. 건조하지 않음.
나는 이기 때문에 attr_accessible
API가 ActiveRecord에 유용하다고 생각합니다. 모델 (DRY) 및 필드를 명시 적으로 정의하지 마십시오. b. 존재하지 않는 필드가 RDB에 저장 될 가능성은 없습니다. 그러나 Mongoid에게는 attr_accessible
보다 나은 해결책이 있어야한다고 생각합니다.
글로벌 구성 설정이 allow_dynamic_fields
이지만 대량 할당에 관한 내용이 아니므로이 설명의 범위를 벗어나지 만 실제로는 모델 별 매크로 여야하며 대량 할당을 처리해야한다고 생각합니다.
어떻게이 문제를 해결하고 있습니까?
해결 방법을 찾으셨습니까 ?? 나는 또한 동일한 문제에 직면하고있다. – Rohit