SORU
26 AĞUSTOS 2013, PAZARTESİ


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
26 AĞUSTOS 2013, PAZARTESİ


İç 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

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Le Cargo !

    Le Cargo !

    24 HAZİRAN 2007
  • MisterBrightside

    MisterBright

    24 Mart 2006
  • StalkerJS

    StalkerJS

    15 HAZİRAN 2010