在使用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
和{{的基线1}}。我怎么能用Paperdragon实现这个目标?
答案 0 :(得分:0)
您可以使用第一个创建的版本作为输入运行第二个处理块:
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