Rails 4 belgelerindeki tüm güçlü parametre örnekleri şunları kullanır:
params.require(:person).permit(:name, :age)
Biri lütfen burada requireve permitburada neler olduğunu parçalayıp açıklayabilir mi?
Rails 4 belgelerindeki tüm güçlü parametre örnekleri şunları kullanır:
params.require(:person).permit(:name, :age)
Biri lütfen burada requireve permitburada neler olduğunu parçalayıp açıklayabilir mi?
Yanıtlar:
paramsBir Hash gibi bir kontrolör görünüyor, ama aslında bir örneği var ActionController::Parametersgibi birkaç yöntem sağlar, requireve permit.
requireYöntem sağlayan bir spesifik parametre mevcut olduğu, ve bu Resim değilse, bu requireyöntem, bir hata verir. Geçilen ActionController::Parametersanahtarın bir örneğini döndürür require.
permitYöntem anahtarlarını ve değerlerini izin sadece dönen, parametreler nesnenin bir kopyasını döndürür. Yeni bir ActiveRecord modeli oluştururken, modele yalnızca izin verilen öznitelikler aktarılır.
Daha önce ActiveRecord modellerinde bulunan beyaz listeye çok benziyor, ancak denetleyicide olması daha mantıklı.
trueverir permitted?. Varsayılan olarak, bir örneği ActionController::Parameterssınıfı döndürür falseiçin permitted?yanıt trueiçin permitted?parametre nesne kütle atama kullanılabilir aracı; aksi takdirde uygulama bir ForbiddenAttributes hatası verir.
permitüzerinde requirede izin ve döndürülen nesne gerekli parametreleri içerir?
Daha kesin olmak gerekirse, örneğin için yarattığınızda. yapıyor .new(...), :persongereksinim tarafından belirtilen bir karma olmalıdır ve kişi karması yalnızca izinle kabul edecek :nameve :agegösterecektir.
Misal:
.new(person: { name: "Bhojendra", age: 32 }) // okay
.new(person: { name: "Rauniyar" }) // okay
.new(person: { name: "Bhojendra", other: 'asdf' }) // not okay, other not permitted
.new(person: { full_name: "Bhojendra Rauniyar" }) // not okay, full_name not permitted
.new(detail: { name: "Bhojendra", age: 32 }) // not okay, must be person
not okayörnek neyi görselleştiriyor?
permitancak açıklamayan doğrudan dokümantasyondan gelirrequire.