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?
ruby-on-rails-4
Erik Trautman
sumber
sumber
permit
tetapi tidakrequire
.Jawaban:
Di
params
dalam controller terlihat seperti Hash, tetapi sebenarnya merupakan instance dariActionController::Parameters
, yang menyediakan beberapa metode sepertirequire
danpermit
.The
require
Metode memastikan bahwa parameter tertentu hadir, dan jika tidak disediakan,require
metode melempar kesalahan. Ini mengembalikan instanceActionController::Parameters
untuk kunci yang dilewatkanrequire
.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.
sumber
true
kepermitted?
metode. Secara default, sebuah instance dariActionController::Parameters
kelas akan kembalifalse
untukpermitted?
Menanggapitrue
untukpermitted?
sarana objek parameter dapat digunakan dalam tugas massa; selain itu aplikasi akan melempar kesalahan ForbiddenAttributes.permit
padarequire
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:
sumber
not okay
divisualisasikan oleh contoh 3 dan 4 ?