İşte kod:Mongoid: Tanımlanmamış alanların toplu atama ile oluşturulmasını nasıl önleyebilirim?
class M
include Mongoid::Document
field :name
end
params = { name: "foo", age: 20 }
M.create(params)
#=> #<M name: "My Name", age: 20>
Bildirim age
olduğu tanımlanmamış, henüz kurtuldu.
kötü niyetli bir kullanıcı gizlice çıkarabileceğiniz büyük dize ile herhangi POST parametreleri ve bilinmeyen alanları ekleyebilirsiniz, çünkü bu (DoS potansiyel bir kaynağı) problemlidir. (Örn name=foo&bogus=#{'x'*1000000}
)
Şimdiye kadar, ben yapamadım attr_accessible
'dan başka bir şey bulamazsınız, ancak Mongons için gerçekten harika değildir, çünkü tüm modellerde her zaman field
ve attr_accessible
aynı alan adlarını korumak zorundasınız. Kuru değil.
attr_accessible
API'sinin ActiveRecord için mükemmel olduğunu düşünüyorum, çünkü a. modellerde (DRY) ve b alanlarını açıkça tanımlamayın., varolmayan bir alanın RDB'ye kaydedilme şansı olmadığı garantilidir. Fakat Mongoid için, bence attr_accessible
'dan daha iyi bir çözüm olmalı.
allow_dynamic_fields
ayarı global bir yapılandırma var fakat bu tartışmada kapsam dışında bulunuyor bu yüzden ancak aslında bir başına modeli makro olması gerektiğini düşünüyorum ve aynı zamanda kitle atama dikkatli olmalıdır, kitle atama ilgisi olmadığını
Not.
Bu problemi nasıl çözüyorsunuz?
Bunun için bir çözüm buldunuz mu? Aynı konuyla da ilgileniyorum. – Rohit