[ruby-on-rails-4] Rails 4에서`params.require (: person) .permit (: name, : age)`는 무엇입니까?

Rails 4 문서의 강력한 매개 변수에 대한 모든 예는

params.require(:person).permit(:name, :age)

누군가가 해체를 기쁘게과 함께 발생하는 것을 설명 할 수 requirepermit여기에?



답변

params컨트롤러는 해시처럼 보이지만 실제로는의 인스턴스이며 및과 ActionController::Parameters같은 여러 가지 방법을 제공합니다 .requirepermit

require메소드는 특정 매개 변수가 존재하는지 확인하고 제공하지 않으면 require오류를 발생시킵니다. ActionController::Parameters키에 전달 된 인스턴스를 반환합니다 require.

permit메소드는 매개 변수 오브젝트의 사본을 리턴하고 허용 된 키와 값만 리턴합니다. 새 ActiveRecord 모델을 작성할 때 허용 된 속성 만 모델로 전달됩니다.

이전에는 ActiveRecord 모델에 포함 된 화이트리스트와 비슷하지만 컨트롤러에있는 것이 더 합리적입니다.


답변

예를 들어 더 정확하게 만들려면 를 수행 하는 경우 require로 표시된 해시 .new(...)가 있어야하며 :personperson 해시는 허용으로 만 승인 :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


답변