Tất cả các ví dụ về tham số mạnh trong tài liệu Rails 4 sử dụng
params.require(:person).permit(:name, :age)
Ai đó có thể vui lòng giải mã và giải thích những gì đang xảy ra với requirevà permitở đây?
Tất cả các ví dụ về tham số mạnh trong tài liệu Rails 4 sử dụng
params.require(:person).permit(:name, :age)
Ai đó có thể vui lòng giải mã và giải thích những gì đang xảy ra với requirevà permitở đây?
Câu trả lời:
Bộ paramsđiều khiển trông giống như Hash, nhưng thực tế nó là một thể hiện của ActionController::Parameters, nó cung cấp một số phương thức như requirevà permit.
Các requireĐảm bảo phương pháp mà một tham số cụ thể là hiện tại, và nếu nó không được cung cấp, các requirephương pháp ném một lỗi. Nó trả về một thể hiện của ActionController::Parameterskhóa được truyền vào require.
Các permitphương thức trả về một bản sao của đối tượng thông số, chỉ trả lại chìa khóa và các giá trị cho phép. Khi tạo một mô hình ActiveRecord mới, chỉ các thuộc tính được phép được truyền vào mô hình.
Nó trông rất giống với danh sách trắng trước đây được bao gồm trong các mô hình ActiveRecord, nhưng nó có ý nghĩa hơn khi nó nằm trong bộ điều khiển.
truevới permitted?phương pháp. Theo mặc định, một thể hiện của ActionController::Parameterslớp sẽ trở lại falsecho permitted?Hưởng ứng trueđể permitted?phương tiện các đối tượng tham số có thể được sử dụng trong phân khối; nếu không, ứng dụng sẽ xuất hiện lỗi ForbiddenAttribut.
permittrên requirecũng cho phép và bao gồm các tham số cần thiết trong đối tượng trả lại?
Nói chính xác hơn, khi bạn tạo ví dụ. làm .new(...), phải có :personbăm được chỉ định bởi yêu cầu và người băm sẽ chỉ chấp nhận :namevà được :agechỉ định bởi giấy phép.
Thí dụ:
.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 okayVí dụ thứ 3 và thứ 4 hình dung ra sao?
permitnhưng khôngrequire.