我正在尝试编写一个功能,通过我的Rails应用程序中的模板创建记录,但是使用了一些来自用户的自定义。
当试图让用户覆盖嵌入文档中的字段时出现困难:文档是重复的而不是更新的。
我从一个类型的对象开始,比方说,ExternalLinkGroupTemplate
,它包含许多ExternalLink
个。它用于创建ExternalLinkGroup
,其中还包含ExternalLink
个。用户应该能够在克隆时编辑链接文本但不能编辑URL,因此用户会看到一个表单当复制时,用户应该能够创建它的副本(简化因为某些代码在不同的文件中,删除测试成功等):
@link_group = ExternalLinkGroup.new
@template.links.each do {|link| @new_link_group.links.push link.dup }
@link_group.update_attributes(params[:link_group])
创建链接组时,它包含的链接数量是模板的两倍,只有第二个集合具有更改。很明显,Mongoid / Active无论是创建新项目而不是更新现有项目。
我不想只是通过参数中的所有字段而不重复任何东西,因为实际上有一些继承正在进行,而且某些链接将是不同的类型并且有额外的字段,我不想为每个只有一堆隐藏字段的代码编写代码。此外,我不希望用户能够修改隐藏字段并提交任何内容。
我无法通过_id
引用它们,因为它们尚未保存。我期待template[links_attributes]
的数组索引足够但不是。
做什么?
使用Rails 3.2.13,MongoDB 2.2.x,Mongoid 3.0.5。