2011-03-29 2 views
1

최근에 레일 (3.0.5)에서 어플리케이션을 빌드하기 시작했습니다. 물건을 움직이면, 나는 나의 모델 (예를 들어, User) 중 하나를 비계했다. 이제 생성되는 모델은 ActiveRecord::Base의 완전히 확장 된 모델이지만 제어기는 User.create(params[:user]) 등을 사용하여 attr_accessible이 설정됨을 의미합니다.루비 온 레일즈 attr_accessible and scaffolding

일부 변경 (일부 변경) 후에 대량 할당의 보호 된 필드에 대한 경고가 표시되며 이러한 방법 중 아무 것도 작동하지 않습니다. 아무도 내가 왜 이것이지 왜 레일이 작동하지 않아야하는 무언가를 비계 하는지를 알 수 있습니까?

답변

1

스캐 폴딩과 attr_accessible은 완전히 다른 두 가지입니다.

속성을 액세스 가능하게 지정하면 모델을 대량 지정 (모델 저장 등)하려고 할 때 액세스 가능한 값만 업데이트됩니다. 따라서 사용자 이름 필드를 액세스 할 수있는 것으로 설정하고 암호 필드를 변경하려고 시도하면 암호 필드가 변경되지 않고 경고 메시지가 표시됩니다.

스캐 폴딩은 RESTful 리소스를 빠르게 실행하는 빠른 방법입니다.

실제로 두 아이디어와 관련이 없습니다.

+0

감사합니다. 알아 냈습니다. 'attr_accessible'의 기본 설정은 테이블의 모든 필드입니다. 그러나'attr_accessible'을 호출하여'virtual '필드가'create'와 함께 작동하도록 허용했을 때,이 초기 설정을 덮어 씀으로써 접근 가능한 접근 가능한 것으로 정의 된 속성들만 남겨 둡니다. – connec

+2

기본값은 없습니다. 당신은 일부 필드에 사용할지 여부를 결정합니다. 그렇지 않으면 모든 필드를 대량으로 업데이트 할 수 있습니다. 그렇다면 접근 가능한 필드 하나라도 다른 사람이 대량으로 업데이트 할 수 없다는 것을 의미합니다. 주제에 대한 자세한 내용 : http://api.rubyonrails.org/classes/ActiveModel/MassAssignmentSecurity/ClassMethods.html – Spyros

+0

설명해 주셔서 감사합니다! – connec

관련 문제