1

我正在尝试编写一个从我的 Rails 应用程序中的模板创建记录的功能,但需要用户进行一些自定义。

当试图让用户覆盖嵌入文档中的字段时会遇到困难:文档是重复的而不是更新的。

我从一个类型的对象开始,比方说,ExternalLinkGroupTemplate它包含许多ExternalLinks。它用于创建ExternalLinkGroup还包含ExternalLinks 的一个。用户应该能够在克隆时编辑链接文本,但不能编辑 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/ActiveWhatever 正在创建新项目而不是更新现有项目。

我不想只通过参数中的所有字段而不复制任何内容,因为实际上正在进行一些继承,并且某些链接将具有不同的类型并具有额外的字段,我不想编写部分代码对于每个只有一堆隐藏字段的人。另外,我不希望用户能够修改隐藏字段并提交任何内容。

我无法引用它们,_id因为它们尚未保存。我原以为数组索引template[links_attributes]就足够了,但事实并非如此。

做什么?

使用 Rails 3.2.13、MongoDB 2.2.x、Mongoid 3.0.5。

4

0 回答 0