Semua contoh parameter kuat dalam Rails 4 docs gunakan
params.require(:person).permit(:name, :age)
Bisakah seseorang mendekonstruksi dan menjelaskan apa yang terjadi dengan requiredan di permitsini?
Semua contoh parameter kuat dalam Rails 4 docs gunakan
params.require(:person).permit(:name, :age)
Bisakah seseorang mendekonstruksi dan menjelaskan apa yang terjadi dengan requiredan di permitsini?
Jawaban:
Di paramsdalam controller terlihat seperti Hash, tetapi sebenarnya merupakan instance dari ActionController::Parameters, yang menyediakan beberapa metode seperti requiredan permit.
The requireMetode memastikan bahwa parameter tertentu hadir, dan jika tidak disediakan, requiremetode melempar kesalahan. Ini mengembalikan instance ActionController::Parametersuntuk kunci yang dilewatkan require.
The permitMetode 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.
trueke permitted?metode. Secara default, sebuah instance dari ActionController::Parameterskelas akan kembali falseuntuk permitted?Menanggapi trueuntuk permitted?sarana objek parameter dapat digunakan dalam tugas massa; selain itu aplikasi akan melempar kesalahan ForbiddenAttributes.
permitpada requirejuga mengizinkan dan termasuk parameter yang diperlukan dalam objek kembali?
Untuk lebih tepatnya, ketika Anda membuat misalnya. perbuatan.new(...) , harus ada :personhash yang ditunjukkan oleh persyaratan dan hash orang hanya akan menerima :namedan :ageditunjukkan 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 okaydivisualisasikan oleh contoh 3 dan 4 ?
permittetapi tidakrequire.