Rails 4 에서 Strong Parameters 메커니즘 에 대해 논 하 다.

1976 단어 railsparameters
Rails 4 의 Strong Parameters 체 제 를 이해 하려 면 먼저 Rails 3 의 Parameters 를 봐 야 합 니 다.
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 4
Rails 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 가 잘못 보 고 됩 니 다.

좋은 웹페이지 즐겨찾기