将外键列入白名单

时间:2012-03-26 14:29:27

标签: cakephp

人们通常如何处理外键值的白名单?让我们忽略相关user记录的用例,它会带来一系列额外的问题并坚持一个相当良性的情况:Task属于Project。当我创建任务时,我想用project_id值创建它,但我不希望该值可编辑。该属性由共享表单中的隐藏字段传递。

我知道在编辑操作中调用save()之前我可以在控制器中取消该属性,但我想知道是否有人有更好的解决方案。我已经使用过/尝过了几次,但都比我想要的更费力或更少“普遍”。

有没有人有解决方案他们真的想解决这个特殊问题?

感谢。

1 个答案:

答案 0 :(得分:0)

我也手动处理。这个过程是这样的。

  1. 加载对象并向用户显示编辑屏幕。
  2. 当用户提交时,获取主ID并再次加载对象。检查所有权。
  3. 拥有用户可编辑字段的白名单,循环显示这些键并填充新对象,将其他所有内容保留。
  4. 保存。
  5. 你可以把它移到某种保存钩子或行为之前我会说。但这似乎是RoR功能的最佳实践(我们都知道GitHub中发生了什么)