답변:
의 params
컨트롤러는 해시처럼 보이지만 실제로는의 인스턴스이며 및과 ActionController::Parameters
같은 여러 가지 방법을 제공합니다 .require
permit
이 require
메소드는 특정 매개 변수가 존재하는지 확인하고 제공하지 않으면 require
오류를 발생시킵니다. ActionController::Parameters
키에 전달 된 인스턴스를 반환합니다 require
.
이 permit
메소드는 매개 변수 오브젝트의 사본을 리턴하고 허용 된 키와 값만 리턴합니다. 새 ActiveRecord 모델을 작성할 때 허용 된 속성 만 모델로 전달됩니다.
이전에는 ActiveRecord 모델에 포함 된 화이트리스트와 비슷하지만 컨트롤러에있는 것이 더 합리적입니다.
true
은 permitted?
메소드에 응답 합니다 . 기본적으로 인스턴스 ActionController::Parameters
클래스는 반환 false
에 대한 permitted?
응답 true
에 permitted?
매개 변수 개체를 대량 할당에서 사용할 수있는 수단; 그렇지 않으면 앱에서 ForbiddenAttributes 오류가 발생합니다.
permit
시 require
반환 된 객체에 필요한 매개 변수도 허용하고 포함합니까?
예를 들어 더 정확하게 만들려면 를 수행 하는 경우 require로 표시된 해시 .new(...)
가 있어야하며 :person
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
예 는 무엇을 시각화합니까?
permit
하지만 설명 하지는 않습니다require
.