Paperdragon 的 Trailblazer Operation 如何按顺序处理图像?

How can a Trailblazer Operation with Paperdragon process an image sequentially?

在使用Paperdragon处理图片的Trailblazer操作中,典型的代码如下:

def process(params)
  validate(params) do |f| 
    f.image!(f.upload) do |v| 
      v.process!(:original)
      v.process!(:version_a) { |job| job.something... }
      v.process!(:version_b) { |job| job.something... }
      v.process!(:version_c) { |job| job.something... }
      end 
    end 
  end 
end 

这将从上传的图像创建四个版本,这些图像在操作合同中可作为 upload 访问。

我想做一些事情 :original 导致 :edited,然后使用 :edited 作为 :verson_a:version_b:version_b 的基线:version_c。我如何使用 Paperdragon 实现这一目标?

您可以 运行 使用第一个创建的版本作为其输入的第二个处理块:

def process(params)
  validate(params) do |f| 
    f.image!(f.upload) do |v| 
      v.process!(:original)
      v.process!(:edited) { |job| job.thumb!(crop) }
      end 
    end 
    f.image!(f.file(:edited)) do |v| 
      v.process!(:version_a) { |job| job.something... }
      v.process!(:version_b) { |job| job.something... }
      v.process!(:version_c) { |job| job.something... }
    end                                                                           
    f.save
  end 
end

其中 file 是合约上的一个方法:

def file(version)
  File.new(Dragonfly.app.datastore.server_root+image[version.to_sym].url)
end