Rails 4 에서 Strong Parameters 메커니즘 에 대해 논 하 다.
1976 단어 railsparameters
Rails 3 에서 Active Record 대상 을 만 들 거나 업데이트 할 때 Mass Assignment 보안 문제 가 발생 합 니 다.그래서 Model 에 서 는 어떤 속성 이 파 라 메 터 의 데이터 에 업데이트 되 는 지 설명 하 는 화이트 리스트 를 만들어 야 합 니 다.
Rails 3
# kings_controller.rb
def create
#{ name: ‘David', sex:male, age: 31}
@king = King.new(params[:king])
if @king.save
redirect_to @king
else
render 'new'
end
end
# king.rb
class King
attr_accessible :name
end
Rails 4Rails 4 는 Strong Parameters 메커니즘 을 도 입 했 고 Model 은 화이트 리스트 의 유 지 를 책임 지지 않 으 며 불법 속성 을 걸 러 내 는 역할 을 Controller 에 떠 넘 겼 다.
# kings_controller.rb
def create
# new parameter { name: ‘David' }
@king = King.new(king_params)
if @king.save
redirect_to @king
else
render 'new'
end
end
private
def king_params
# old parameter { name: ‘David', sex:male, age: 31}
# new parameter { name: ‘David' }
params[:king].permit(:name)
end
# king.rb
class King
end
Strong Parameters 가 뭐 예요?스 트 롱 파 라 메 터 는 화이트 리스트 필터 입 니 다.
View 층 이 입 은 데 이 터 는 Action Controller::Parameters 대상 으로 전 환 됩 니 다.
오래된 ActionController::Parameters 대상 을 걸 러 내 고 새로운 ActionController::Parameters 대상 을 생 성 합 니 다.
*화이트 리스트 속성 만 유지
*실례 변수@allowed true 로 부여 하 다
필터 후의 ActionController::Parameters 대상 을 model 에 전송 하고 해당 하 는 ActiveRecord 대상 을 만 들 거나 업데이트 합 니 다.
model 에 게 억지로 전 할 수 있 습 니까?패왕 이 억지로 활 을 올 릴 수 있 습 니까?
Strong Parameter 필터 없 는 ActionController::Parameters 대상 의@allowed 는 false(필터 후 true)입 니 다.Model 에 억지로 전달 하면 ActiveModel::Forbidden Attributes Error 가 잘못 보 고 됩 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Ruby에서 문자열을 고정하는 다른 방법Ruby에서 문자열을 고정하려면 최소한 두 가지 방법이 있습니다. 아시다시피 a와 b는 동일한 개체 인스턴스인 것 같습니다. 문자열에 적용할 수 있는 일종의 이상한 메서드 입력: - 다음과 같은 코드를 볼 수 있습니...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.