2012-04-16 2 views
3

Lynda.com의 튜토리얼 Ruby on Rail 3 Essential Training에 따라 있습니다. Active Record Entry를 만드는 데 어려움을 겪고 있습니다. 이것은 내 콘솔에있는 오류입니다. 내가 잘못 뭐하는 거지ActiveModel :: MassAssignmentSecurity :: 오류 : 보호 된 속성을 대량 할당 할 수 없습니다.

class User < ActiveRecord::Base 
    attr_accessible :first_name, :last_name 
end 

:

1.9.3p125 :007 > user = User.new(:first_name => "Mike", :last_name => "Jones") 
ActiveModel::MassAssignmentSecurity::Error: Can't mass-assign protected attributes: first_name, last_name 
    from /home/mark/.rvm/gems/ruby-1.9.3-p125/gems/activemodel-3.2.3/lib/active_model/mass_assignment_security/sanitizer.rb:48:in `process_removed_attributes' 
    from /home/mark/.rvm/gems/ruby-1.9.3-p125/gems/activemodel-3.2.3/lib/active_model/mass_assignment_security/sanitizer.rb:20:in `debug_protected_attribute_removal' 
    from /home/mark/.rvm/gems/ruby-1.9.3-p125/gems/activemodel-3.2.3/lib/active_model/mass_assignment_security/sanitizer.rb:12:in `sanitize' 
    from /home/mark/.rvm/gems/ruby-1.9.3-p125/gems/activemodel-3.2.3/lib/active_model/mass_assignment_security.rb:230:in `sanitize_for_mass_assignment' 
    from /home/mark/.rvm/gems/ruby-1.9.3-p125/gems/activerecord-3.2.3/lib/active_record/attribute_assignment.rb:75:in `assign_attributes' 
    from /home/mark/.rvm/gems/ruby-1.9.3-p125/gems/activerecord-3.2.3/lib/active_record/base.rb:498:in `initialize' 
    from (irb):7:in `new' 
    from (irb):7 
    from /home/mark/.rvm/gems/ruby-1.9.3-p125/gems/railties-3.2.3/lib/rails/commands/console.rb:47:in `start' 
    from /home/mark/.rvm/gems/ruby-1.9.3-p125/gems/railties-3.2.3/lib/rails/commands/console.rb:8:in `start' 
    from /home/mark/.rvm/gems/ruby-1.9.3-p125/gems/railties-3.2.3/lib/rails/commands.rb:41:in `<top (required)>' 
    from script/rails:6:in `require' 
    from script/rails:6:in `<main>` 

이것은 내 모델에있는 것입니다. 레일이 있습니다 3.2.3

답변

4

콘솔을 다시 시작하십시오. 콘솔을 시작한 후 사용자를 위해 모델을 만든 경우 다시 시작해야합니다.

+0

감사합니다. 그렇게 간단하지 않다는 것을 깨닫지 못했습니다. –

+1

새로 고침! 다시 시작하지 않아도 콘솔을 다시로드해야합니다. – ejunker

10

lynda 코스는 레일 3에서 개발되었고 레일 3.2.3에서는 기본적으로 질량 지정이 없다는 것을 알고 있습니다. 당신은 모델로 가서 attr_accessible : name, : position, : visible을 추가해야합니다. 기본적으로 대량 할당하려는 모든 속성을 추가해야합니다.

+0

큰 감사합니다. –

2

사전주의 사항없이 대량 할당을하면 공격자가 데이터베이스 열의 값을 설정할 수 있으므로 기본적으로 비활성화되어 있습니다.

def signup 
    params[:user] # => {:name => “ow3ned”, :admin => true} 
    @user = User.new(params[:user]) 
end 

자세한 내용은 Ruby On Rails Security Guide입니다.

2

방금 ​​attr_accessible : first_name, : last_name, : username 행을 모델 파일에 추가했습니다. 이것은 나를 위해 일했습니다.

0

attr_accessible :first_name, :last_name을 컨트롤러가 아닌 사용자 모델에 넣어야합니다. 사람이 여기에 같은 문제가 없었다 나를 위해 일한 어떤 경우

2

나도 보안 설정 해제

전원을 켜고은 Lynda.com에서 철도 3 필수 교육에 튜토리얼 루비 따라 다음되었다. config/application.rb를 열고 config.active_record.whitelist_attributes를 true 대신 false로 변경하십시오. 이로 인해 앱 보안이 다소 떨어지지 만 튜토리얼을 빨리 따라 할 수 있습니다. 출처 : http://www.lynda.com/Ruby-on-Rails-3-tutorials/essential-training/55960-2/faqs

관련 문제