Rails 3.2质量分配

时间:2013-01-10 22:23:26

标签: ruby-on-rails-3 mass-assignment

我希望我能在最近升级的Rails 3.2应用程序中获得有关群发作业问题的帮助。

据我所知,在Rails 3.2中,属性默认被锁定,为了分配它们,我需要使用attr_accessible“解锁”它们。这适用于普通模型属性。

但是,我有一个自行开发的自定义属性mixin,它允许我向任何模型添加任意命名的属性。这些属性存储在custom_properties表中。如果我向模型询问类似于foo.property_foobar的属性,那么这个mixin利用缺少的方法来查找该表中的属性。

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

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

希望所有这一切都有道理。谢谢大家!

路易斯

1 个答案:

答案 0 :(得分:0)

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

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

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