Rails 4 belgelerindeki tüm güçlü parametre örnekleri şunları kullanır:
params.require(:person).permit(:name, :age)
Biri lütfen burada require
ve permit
burada 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 require
ve permit
burada neler olduğunu parçalayıp açıklayabilir mi?
Yanıtlar:
params
Bir Hash gibi bir kontrolör görünüyor, ama aslında bir örneği var ActionController::Parameters
gibi birkaç yöntem sağlar, require
ve permit
.
require
Yöntem sağlayan bir spesifik parametre mevcut olduğu, ve bu Resim değilse, bu require
yöntem, bir hata verir. Geçilen ActionController::Parameters
anahtarın bir örneğini döndürür require
.
permit
Yö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ı.
true
verir permitted?
. Varsayılan olarak, bir örneği ActionController::Parameters
sınıfı döndürür false
için permitted?
yanıt true
için permitted?
parametre nesne kütle atama kullanılabilir aracı; aksi takdirde uygulama bir ForbiddenAttributes hatası verir.
permit
üzerinde require
de 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(...)
, :person
gereksinim tarafından belirtilen bir karma olmalıdır ve kişi karması yalnızca izinle kabul edecek :name
ve :age
gö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?
permit
ancak açıklamayan doğrudan dokümantasyondan gelirrequire
.