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 require
và 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 require
và 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ư require
và 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 require
phương pháp ném một lỗi. Nó trả về một thể hiện của ActionController::Parameters
khóa được truyền vào require
.
Các permit
phươ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.
true
với permitted?
phương pháp. Theo mặc định, một thể hiện của ActionController::Parameters
lớp sẽ trở lại false
cho 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.
permit
trên require
cũ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ó :person
băm được chỉ định bởi yêu cầu và người băm sẽ chỉ chấp nhận :name
và được :age
chỉ đị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 okay
Ví dụ thứ 3 và thứ 4 hình dung ra sao?
permit
nhưng khôngrequire
.