在Rails&中更新嵌入式新记录的属性。 Mongoid

时间:2013-04-18 05:23:36

标签: ruby-on-rails mongoid

我正在尝试编写一个功能,通过我的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。

0 个答案:

没有答案