Semua contoh parameter kuat dalam Rails 4 docs gunakan
params.require(:person).permit(:name, :age)
Bisakah seseorang mendekonstruksi dan menjelaskan apa yang terjadi dengan require
dan di permit
sini?
Semua contoh parameter kuat dalam Rails 4 docs gunakan
params.require(:person).permit(:name, :age)
Bisakah seseorang mendekonstruksi dan menjelaskan apa yang terjadi dengan require
dan di permit
sini?
Jawaban:
Di params
dalam controller terlihat seperti Hash, tetapi sebenarnya merupakan instance dari ActionController::Parameters
, yang menyediakan beberapa metode seperti require
dan permit
.
The require
Metode memastikan bahwa parameter tertentu hadir, dan jika tidak disediakan, require
metode melempar kesalahan. Ini mengembalikan instance ActionController::Parameters
untuk kunci yang dilewatkan require
.
The permit
Metode mengembalikan salinan dari objek parameter, kembali hanya diizinkan kunci dan nilai-nilai. Saat membuat model ActiveRecord baru, hanya atribut yang diizinkan yang dilewatkan ke dalam model.
Ini terlihat sangat mirip dengan daftar putih yang sebelumnya termasuk dalam model ActiveRecord, tetapi lebih masuk akal untuk berada di controller.
true
ke permitted?
metode. Secara default, sebuah instance dari ActionController::Parameters
kelas akan kembali false
untuk permitted?
Menanggapi true
untuk permitted?
sarana objek parameter dapat digunakan dalam tugas massa; selain itu aplikasi akan melempar kesalahan ForbiddenAttributes.
permit
pada require
juga mengizinkan dan termasuk parameter yang diperlukan dalam objek kembali?
Untuk lebih tepatnya, ketika Anda membuat misalnya. perbuatan.new(...)
, harus ada :person
hash yang ditunjukkan oleh persyaratan dan hash orang hanya akan menerima :name
dan :age
ditunjukkan dengan izin.
Contoh:
.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
divisualisasikan oleh contoh 3 dan 4 ?
permit
tetapi tidakrequire
.