0

我可以像这样复制一个对象:

  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

出于某种原因,即使在磁盘上创建了目录,我也会得到错误的路径。 错误的路径在模型对象内部。磁盘上的那些路径是正确的,在那里复制的文件也是正确的。那么是否可以不复制磁盘上的图像(并且具有符号链接功能)?

4

1 回答 1

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方法以完成您的想法。
祝你好运 :)

于 2013-06-02T15:49:25.773 回答