警告:无法批量分配受保护的属性

时间:2011-03-29 02:15:01

标签: ruby-on-rails-3 nested-attributes

我收到此错误“警告:无法批量分配受保护的属性:races_attributes” ,在轨道3上跟随此http://railscasts.com/episodes/196-nested-model-form-part-1时。

Races是Events的一个组成部分。这是我的模特/ race.rb:

class Race < ActiveRecord::Base
belongs_to :event

attr_accessible :name, :unit
end

这是我的models / event.rb:

class Event < ActiveRecord::Base
has_many :races, :dependent => :destroy

accepts_nested_attributes_for :races

attr_accessible :name, :date, :description, :location_name, :address_one, :address_two, :city, :state, :zip, :active, :races_attributes
end

任何想法?

2 个答案:

答案 0 :(得分:20)

比使用attr_accessible更短,比使用whitelist_attributes更安全: attr_protected

只需指出受保护的属性,Rails就会推断所有其他属性都可以进行质量分配:

class MyClass < ActiveRecord::Base
  attr_protected :id
end

(我总是有更多的属性,我想要大量分配,而不是我想要保护的属性。)

答案 1 :(得分:11)

attr_accessible指定您无法使用save方法批量分配属性。因此,如果您更改未使用attr_accessible定义的属性,您将收到警告,因为它实际上不会保存在数据库中。