ActiveModel :: MassAssignmentSecurity :: Error: Cannot assign protected attributes:

I am following the Ruby on Rail 3 Essential Training tutorial from Lynda.com. It's hard for me to create an Active Record Entry. This is the error I get in my console.

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>`

This is what I have in my model:

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

What am I doing wrong. I have rails 3.2.3

+3
source share
6 answers

Try restarting the console. If you created a model for the user after starting the console, you must restart it.

+4
source

, , lynda rails3 3.2.3 . attr_accessible: name,: position,: visible. , .

+10

- , .

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

Ruby On Rails.

+2

attr_accessible: first_name,: last_name,: username. .

+2

Ruby on Rail 3 Essential Training Lynda.com, - , ,

Disable the security setting. Open config / application.rb and change config.active_record.whitelist_attributes to false instead of true. This makes your application a little less secure, but allows you to quickly move forward with a tutorial. this is from: http://www.lynda.com/Ruby-on-Rails-3-tutorials/essential-training/55960-2/faqs

+2
source

Be sure to put it attr_accessible :first_name, :last_namein the user model, not in the controller.

0
source

All Articles