2012-07-02 2 views
2

이름은이 모델을 공유했다면 그것은 도움이 것ActiveModel :: MassAssignmentSecurity :: 오류 : 대량 할당 보호 할 수 없습니다 속성 : 나는 그것의 새 사용자를 만들려고 할 때

ActiveModel::MassAssignmentSecurity::Error: Can't mass-assign protected attributes: name 
    from c:/RubyOnRails/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/ 
activemodel-3.2.3/lib/active_model/mass_assignment_security/ 
sanitizer.rb:48:in `process_removed_attri 
butes' 

답변

1

말한다 암호. 모델 파일에서

당신의 config/application.rb에서 사용자가

attr_accessible :name 
+0

I : -과 같이

http://api.rubyonrails.org/classes/ActiveModel/MassAssignmentSecurity/ClassMethods.html

대안은 먼저 레코드를 작성하고, 이후에 다른 사람을 설정할 때 일부 속성을 설정하는 것입니다 : 여기

은 자세한 내용입니다 당신이 나에게 조언 한 줄을 추가했다. 문제가 해결되지 않았다. 여기에 코드/ 'digest'가 필요하다. 클래스 사용자 참, : 길이 => {: 최대 => 50} 유효성 : 이메일, : 존재 => 참, : 형식 => {: with => email_regex }, : 고유성 => {: case_sensitive => false} – Dennis

+0

죄송합니다. 수정. attr_accessible : name –

+0

감사합니다. Sagar 님이 문제를 해결했습니다. – Dennis

1

을 attr_accessible에 추가, 다음 줄이 있습니다

config.active_record.whitelist_attributes = true 

모델에, 당신은이 줄을 그리워하면서 :

attr_accessible :name 

구성 파일을 변경하지 말고 attr_accessible을 추가하십시오. 질량 할당 보안 문제를 더 잘 이해하려면 http://guides.rubyonrails.org/security.html#mass-assignment을 읽어야합니다.

+0

문제가 해결되지 않았다고 나에게 조언 한 행을 추가했습니다. – Dennis

+0

오류 메시지가 정확히 동일합니까? –

+0

예 동일한 메시지가 다시 나타납니다. – Dennis

3

몇 가지 :

질량 할당은 일반적으로 해시 속성의 일부로서 객체를 생성 호출로 속성을 전달하는 것을 의미한다. 즉, 새 객체를 만드는 호출에 해시로 된 일련의 속성을 전달합니다. 예를 들어 :

@user = User.create({:name => "My name", :user_type => "nice_user"}) 

그러나, 레일은 기본으로 그런 식으로 할당 할 수 있습니다 모든 속성을 의미 몇 가지 기본적인 보안 규칙이 포함되어 있습니다. 미리 지정할 수있는 것을 지정해야합니다. 당신은 당신이 게시 오류가 발생하면 속성이 attr_accessible입니다 지정하지 않으면

class user < ActiveRecord::Base 
    attr_accessible :name, :user_type 
end 

, 당신은에서 개체를 만들 통과 :이처럼 그렇게.

# In this example `user_type` is not attr_accessible so it needs to be set specifically 
@user = User.create({:name => "My name"}) 
@user.user_type = "nice_user" 
@user.save 
+0

감사합니다. Kevin, user.rb에 한 줄 더 추가했습니다 (attr_accessible : 이름) 현재 작동 중입니다. 실제로 이것은 내 첫 번째 단계입니다. 그래서 앞으로이 코드에 대해 언급 할 수 있도록 연습 해 보겠습니다. 감사합니다. – Dennis

관련 문제