2011-01-29 3 views
16

난 그냥이 코드가 모델 파일의 경우 :이 무엇을 의미하는지Ruby on Rails를 사용하는 모델의 모든 필드에 대한 액세스를 허용하지 않으려면 어떻게 'attr_accessible'을 설정할 수 있습니까?

class Users < ActiveRecord::Base 
end 

? 모델과 관련된 모든 속성은 액세스 가능하거나 불가능합니까? 내가이 필드 그 모델에 대한 에 대한 액세스를 허용하지 하기 위해 'attr_accessible'설정하는 방법

?

+2

또한 "모델에 관련된 모든 속성에 액세스하거나하지?"질문 - 기본적으로 모든 필드는 대량 할당 –

답변

34

은 그냥 설정 :

class Users < ActiveRecord::Base 
    attr_accessible #none 
end 

처럼 팬 Thomakos이 attr_accessible 대량 RET 할 수있는 매개 변수의 배열 (말했다 당신이 어떤 문자를 보내 그래서 만약, 다음 매개 변수가 액세스 할 수 없습니다

..

This ticket was useful

+0

이것은 확실히 간단하고 최상의 접근법입니다. 반대로 다음과 같이 설정할 수 있습니다 : "attr_protected : each, : one, of :, your, : attributes" – Andrew

+2

미래의 오버플로를 위해 --- 이것은 레일즈 3.2에서 유효합니다. 레일즈 4에서는 strong_parameters https : //github.com/rails/strong_parameters –

10

기본적으로 속성은 모두 attr_accessible입니다 (즉, 내 대량 할당을 설정할 수 있음).

  • attr_accessible -이 속성 목록 만 질량 할당 (화이트리스트)으로 설정할 수 있습니다.
  • attr_protected - 이러한 속성은 질량 할당 (블랙리스트)으로 설정할 수 없습니다.
  • attr_readonly - 레코드를 만들 때를 제외하고는 이러한 속성을 설정할 수 없습니다.

는 완전히 대량 할당을 해제 같은 것을 사용하려면

 
ActiveRecord::Base.send(:attr_accessible, nil) 

모든 활성 기록 개체에 대한 대량 할당을 해제하지만,이 명령을 수행하기 위해 하나 개 이상의 모델을 지정할 수 있습니다이 명령 어떤 경우에는 대량 할당을 원하지만 다른 경우에는 그렇지 않습니다.

+0

에 액세스 할 수 있습니다하지만 어떻게 " 'attr_protected'수 "특정 모델의 모든 속성? – user502052

+0

그 정보로 내 소식을 업데이트했습니다. –

관련 문제