2012-04-16 9 views
3

Lynda.comのチュートリアルRuby on Rail 3 Essential Trainingに従っています。私はActive Record Entryを作成するのが難しいです。これは私のコンソールに表示されるエラーです。私が間違っているのは何ActiveModel :: MassAssignmentSecurity :: Error:保護された属性を一括割り当てできません:

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

すごく感謝Thatsは働いた –

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

関連する問題