2013-08-25 15 views
102

Tất cả các ví dụ về thông số mạnh trong tài liệu Rails 4 sử dụng params.require(:person).permit(:name, :age).`params.require (: person) .permit (: name,: age)` đang làm gì trong Rails 4?

Có thể ai đó vui lòng giải mã và giải thích những gì đang xảy ra với requirepermit tại đây?

Cảm ơn!

+2

Ví dụ này đến trực tiếp từ tài liệu, giải thích 'giấy phép' nhưng không phải' yêu cầu'. –

Trả lời

140

params trong bộ điều khiển trông giống như một Hash, nhưng nó thực sự là một thể hiện của ActionController::Parameters, cung cấp một số phương pháp như requirepermit.

Phương thức require đảm bảo rằng có một tham số cụ thể và nếu không được cung cấp, phương pháp require sẽ phát sinh lỗi. Nó trả về một thể hiện của ActionController::Parameters cho khóa được chuyển vào require.

Phương thức permit trả về một bản sao của đối tượng tham số, chỉ trả về các khóa và giá trị được phép. Khi tạo mô hình ActiveRecord mới, chỉ các thuộc tính được phép mới được chuyển vào mô hình.

Dường như danh sách trắng đã được bao gồm trong các mô hình ActiveRecord trước đây, nhưng điều này có ý nghĩa hơn khi nó nằm trong bộ điều khiển.

+24

Mô tả giấy phép hơi lệch: giấy phép trả về một mã băm khác chỉ chứa khóa được phép AND (điều này rất quan trọng) sẽ trả lời bằng 'true' cho phương thức' được phép? '. Theo mặc định, một thể hiện của lớp 'ActionController :: Parameters' sẽ trả về' false' cho 'được phép?' Trả lời 'true' cho' được phép? 'Có nghĩa là đối tượng tham số có thể được sử dụng trong việc gán khối; nếu không ứng dụng sẽ ném lỗi ForbiddenAttributes. – sameers

+0

Có chuỗi 'giấy phép' trên' yêu cầu 'cũng cho phép và bao gồm các tham số bắt buộc trong đối tượng được trả về không? – Dennis

Các vấn đề liên quan