0

我希望我能在我最近升级的 Rails 3.2 应用程序中获得一些关于批量分配问题的帮助。

我知道在 Rails 3.2 中,属性默认情况下是锁定的,为了分配它们,我需要使用 attr_accessible “解锁”它们。这适用于普通模型属性。

但是,我有一个自制的自定义属性 mixin,它允许我向任何模型添加任意命名的属性。这些属性存储在 custom_properties 表中。如果我向模型询问诸如 foo.property_foobar 之类的属性,则此 mixin 会利用缺少的方法从该表中查找属性。

使用此 mixin 的每个模型都可以具有 X 具有任意名称的自定义属性。我没有能力指定这些属性的名称,这显然很难添加到 attr_accessible。

有没有人建议我如何允许对这些动态属性进行批量分配?我宁愿不将所有模型属性列入白名单。

希望所有这些都有意义。感谢大家!

路易斯

4

1 回答 1

0

一种解决方案是attr_protected改用。这允许您将某些属性列入黑名单,同时允许其余属性。但是,这有点难以确保。

另一种解决方案是将分配保护移至控制器,并根据需要在每个控制器/操作中允许/拒绝属性。有一个名为strong parameters的 gem允许这样做,它也将包含在 Rails 4 中。我建议这个解决方案。

如果上述方法都不适合您,也许您应该尝试另一种方法来实现这些任意属性?例如,您可以将它们作为序列化哈希存储在数据库列中。

于 2013-01-10T23:08:21.580 回答