4 - Güçlü Parametreleri İç İçe Nesneleri Raylar
Çok basit bir sorum var. Ama şimdiye kadar bir çözüm bulamadım.
Burada sunucuya göndermek JSON dize kadar:
{
"name" : "abc",
"groundtruth" : {
"type" : "Point",
"coordinates" : [ 2.4, 6 ]
}
}
Yeni izin yöntemi kullanarak, var:
params.require(:measurement).permit(:name, :groundtruth)
Bu herhangi bir hata atar, ama oluşturulan veritabanı girişi groundtruth değeri yerine null
içerir.
Eğer sadece ayarlayın:
params.require(:measurement).permit!
Her şey beklendiği gibi kurtardı olsun, ama tabii ki, bu güçlü güvenlik parametreleri tarafından sağlanan öldürür.
Diziler, ama tek bir örnek, iç içe geçmiş nesneleri kullanarak izin vermek için nasıl bir çözüm buldum. Bu oldukça yaygın kullanımı olan bir olgu olmalıdır beri bu şekilde olmalı. Nasıl işliyor?
CEVAP
İç içe izin vermek istediğiniz zaman kulağa geldiği kadar garip bir dizi iç içe geçmiş nesne özniteliklerini belirtmek için öznitelik. Senin durumunda olurdu
Güncelleme@RafaelOliveira . tarafından önerilen
params.require(:measurement)
.permit(:name, :groundtruth => [:type, :coordinates => []])
Eğer birden fazla iç içe nesneleri istiyorsanız öte yandan daha sonra... ... böyle bir karma içine sarın
params.require(:foo).permit(:bar, {:baz => [:x, :y]})
< / ^ br .
Raylar aslında bu oldukça iyi bir belge var: http://api.rubyonrails.org/classes/ActionController/Parameters.html#method-i-permit
Daha fazla açıklama için, permit
strong_parameters
kendini uygulanması bakabilirsin: https://github.com/rails/rails/blob/master/actionpack/lib/action_controller/metal/strong_parameters.rb#L246-L247
Liste/nesneleri kullanarak Raylar kons...
İzinsiz Olarak İç İçe Geçmiş Öznitelik...
Raylar geçiş parametreleri redirect_to...
Nasıl Ruby veya Raylar ile bir URL, UR...
ne kadar güçlü parametreleri ile bir d...