我遇到了以下错误
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'
答案 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”。感谢所有帮助过的人,这教会我确保永远不要假设任何事情。