ตัวอย่างทั้งหมดของพารามิเตอร์ที่แข็งแกร่งใน Rails 4 ใช้เอกสาร
params.require(:person).permit(:name, :age)
คนได้โปรดแยกแยะและอธิบายสิ่งที่เกิดขึ้นด้วยrequire
และpermit
ที่นี่?
ตัวอย่างทั้งหมดของพารามิเตอร์ที่แข็งแกร่งใน Rails 4 ใช้เอกสาร
params.require(:person).permit(:name, :age)
คนได้โปรดแยกแยะและอธิบายสิ่งที่เกิดขึ้นด้วยrequire
และpermit
ที่นี่?
คำตอบ:
params
ในตัวควบคุมลักษณะเช่นกัญชา แต่จริง ๆ แล้วมันเป็นตัวอย่างของActionController::Parameters
ซึ่งมีหลายวิธีเช่นและrequire
permit
require
วิธีการเพื่อให้แน่ใจว่าพารามิเตอร์ที่เฉพาะเจาะจงเป็นปัจจุบันและถ้ามันไม่ได้ให้ที่require
วิธีการโยนข้อผิดพลาด ส่งคืนอินสแตนซ์ของActionController::Parameters
สำหรับคีย์ที่ส่งผ่านเข้าrequire
มา
permit
วิธีการส่งกลับสำเนาของวัตถุพารามิเตอร์กลับเท่านั้นที่ได้รับอนุญาตคีย์และค่า เมื่อสร้างโมเดล ActiveRecord ใหม่เฉพาะแอ็ตทริบิวต์ที่อนุญาตเท่านั้นที่จะถูกส่งผ่านไปยังโมเดล
ดูเหมือนว่ารายการที่อนุญาตที่เคยรวมอยู่ในรุ่น ActiveRecord จะมีลักษณะเหมือนกัน แต่ก็เหมาะสมกว่าที่จะอยู่ในคอนโทรลเลอร์
true
กับpermitted?
วิธีการ โดยค่าเริ่มต้นอินสแตนซ์ของActionController::Parameters
ชั้นจะกลับมาfalse
สำหรับpermitted?
การตอบสนองtrue
ที่จะpermitted?
หมายถึงวัตถุพารามิเตอร์ที่สามารถนำมาใช้ในการกำหนดมวล; มิฉะนั้นแอปจะส่งข้อผิดพลาด ForbiddenAttributes
permit
กับrequire
อนุญาตและรวมพารามิเตอร์ที่จำเป็นในวัตถุที่ส่งคืนหรือไม่
เพื่อความแม่นยำมากขึ้นเมื่อคุณสร้างเช่น การทำ.new(...)
จะต้องมี:person
แฮชที่ระบุโดยต้องการและแฮชของบุคคลนั้นจะยอมรับ:name
และ:age
ระบุโดยการอนุญาตเท่านั้น
ตัวอย่าง:
.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
ตัวอย่างที่ 3 และ 4 เห็นภาพอะไร
permit
require