使用rails 3.2.11创建记录

时间:2013-02-14 12:15:55

标签: ruby-on-rails ruby-on-rails-3.2

irb(main):016:0> subject  = Subject.new
=> #<Subject id: nil, name: nil, position: nil, visible: false, created_at: nil, updated_at: nil>
irb(main):017:0> 
irb(main):017:0> subject = Subject.new(:name => "First", :position => 1, :value => true)
ActiveModel::MassAssignmentSecurity::Error: Can't mass-assign protected attributes: name, position, value

使用rails 3.2.11创建新记录时出现上述错误。我无法理解错误是什么,如何插入此记录。

2 个答案:

答案 0 :(得分:4)

Subject模型中添加以下行:

attr_accessible :name, :position, :value

批量分配安全性提供了一个界面,用于保护最终用户分配的属性。它指定了可以通过质量分配设置的模型属性的白名单,例如new(属性),update_attributes(属性)或属性=(属性)。

更多信息:

答案 1 :(得分:0)

他们最近在rails 3.2.3进行了安全性更改,要求您通过将config.active_record.whitelist_attributes设置为false来明确允许批量分配 http://www.h-online.com/security/news/item/Rails-3-2-3-makes-mass-assignment-change-1498547.html

或者,您可以为模型中您希望能够更改的属性设置attr_accessible,而不是允许批量分配,例如。

attr_accessible :name, :position, :value #....