奇怪的“无法批量分配受保护的属性”错误

时间:2013-12-04 21:16:45

标签: ruby-on-rails ruby

我遇到了以下错误

Can't mass-assign protected attributes:

我知道这是一个普遍问的问题,但所提供的答案似乎都不适合我。问题是,我的“父”模型中已经有这2行:

accepts_nested_attributes_for

attr_accessible  :childmodel_attributes

过去我遇到过这个错误,这2行成功地解决了这个问题..但是他们现在还没有。顺便说一句,“受保护的属性”是我的“子”模型中的所有字段,而不仅仅是某些字段。

希望有人可以帮助我,我会卡住,不知道还能做什么。

这是完整的错误行:

Can't mass-assign protected attributes: linea, origen_comp, conector, char_ini, char_fin, modopremio_id, codigo_opc, ochar_ini, ochar_fin

这是“child_model”具有的内容

:consorcio_id, :productosacierto_id, :clave, :linea, :origen_comp, :conector, :char_inic, :char_fin, :modopremio_id, codigo_opc, :ochar_ini, :onchar_fin

(旁注,“父/子模型”的名称仅供参考,它们不是真正的名称(productosacierto AND productosregla)就是它。

父母模特(Productosacierto)

has_many :productosregla
accepts_nested_attributes_for :productosregla, :reject_if => :all_blank, :allow_destroy => true
attr_accessible  :productosregla_attributes, :producto_id, :consorcio_id, :clave, :descripcion, :una_condicion
default_scope order: 'id'
self.table_name = "hproductos_aciertos"

儿童模型(Productosregla)

self.table_name = "hproductos_reglas"  
belongs_to :productosacierto
attr_accessible :consorcio_id, :productosacierto_id, :clave, :linea, :origen_comp, :conector, :char_inic, :char_fin, :modopremio_id, codigo_opc, :ochar_ini, :ochar_fin 
default_scope order: 'id'

2 个答案:

答案 0 :(得分:0)

如果这是您的子模型的精确副本,那么我想attr_accessible行末尾的逗号就是问题!

答案 1 :(得分:0)

我现在觉得有点尴尬。我的模型上有几个sintax错误,这就是造成这个问题的原因。我理所当然地认为,如果存在一些错误,rails会抛出一个sintax错误,特别是当它在模型中编写代码时它是如此微妙......

这就是我所拥有的:

attr_accessible :consorcio_id, :productosacierto_id, :clave, :linea, :origen_comp, :conector, :char_inic, :char_fin, :modopremio_id, codigo_opc, :ochar_ini, :ochar_fin

这应该是:

attr_accessible :consorcio_id, :productosacierto_id, :clave, :linea, :origen_comp, :conector, :char_ini, :char_fin, :modopremio_id, :codigo_opc, :ochar_ini, :ochar_fin 

正如你所看到的,在codigo_opc param之前有一个“:”缺失,而且char_ini param还有一个不属于的额外“c”。感谢所有帮助过的人,这教会我确保永远不要假设任何事情。