我可以像这样复制一个对象:
plast = Product.last
dupobj = plast.dup
dupobj.image = plast.image
dupobj.save!
从控制台完美运行。但是,当我想填充数据库时,只需将其包装在for循环中:
plast = Product.last
for i in 0..50
dupobj = plast.dup
dupobj.image = plast.image
dupobj.save!
end
由于某种原因,即使在磁盘上创建目录,我也会得到错误的路径。 错误的路径在模型对象中。磁盘上的那些路径是正确的,复制在那里的文件也是正确的。那么有可能不复制磁盘上的图像(并具有类似符号链接的功能)吗?
答案 0 :(得分:1)
由于您使用的是CarrierWave Mountuploader,请查看它的默认存储策略。
它是这样的:
# Override the directory where uploaded files will be stored.
# This is a sensible default for uploaders that are meant to be mounted:
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
此处model
指的是您image
所指的对象
model.class.to_s.underscore
=>型号名称。在这里,Product
。
mounted_as
=>挂载属性。这里image
model.id
=>对象的id =>负责不同的道路。
因此,您必须将地址设为/product/image/34/image.jpg
配置store_dir
方法以实现您的想法
祝你好运:)