将现有CarrierWave文件克隆到另一个Mongoid记录

时间:2016-07-03 18:29:20

标签: mongoid carrierwave copying cloning

我有一个名为Product的Mongoid模型,它与自身有has_onebelongs_to关联,因此我可以有originalnew_version行为。

这样做是为了在新版本获得批准之前,可以在不影响原始版本的情况下修改产品。我设法dup原始产品,包括它的多个CarrierWave附件,以创建new_version(这不会重新上传已存在的文件)。

当我修改新版本并上传不同的文件并批准这个新版本时,我需要将这些新文件(和其他属性)分配给原始产品。要做到这一点,我使用的代码块类似于:

# self is this context is the new product version
original_product.assign_attributes self.attributes.except(*Product.attributes_to_exclude)
original_product.save && self.destroy

在我排除的属性中,我排除了id, _id, created_at, updated_at以及其他与复制到原始版本无关或不必要的内容。这适用于所有非CarrierWave文件属性,但不保存文件属性。我知道它存储在Mongoid文档中的所有内容都是文件名,我希望它可以像修改此文档的属性一样简单。

关于如何实现这一点的任何想法?我基本上寻找的是与dup方法相同的行为,但在我正在解释的批准上下文中。

谢谢!

0 个答案:

没有答案