我正在学习 Lynda.com 的 Ruby on Rail 3 Essential Training 教程。我在创建 Active Record 条目时遇到了困难。这是我在控制台中得到的错误。
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>`
这是我在我的模型中所拥有的:
class User < ActiveRecord::Base
attr_accessible :first_name, :last_name
end
我究竟做错了什么。我有导轨 3.2.3
最佳答案
据我所知,lynda 类(class)是在 rails3 上开发的,而在 rails 3.2.3 中,默认情况下没有批量分配。你必须去你的模型并添加 attr_accessible :name, :position, :visible。基本上,您必须添加要批量分配的每个属性。
关于ruby-on-rails-3 - ActiveModel::MassAssignmentSecurity::Error:无法批量分配 protected 属性:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10183298/