我在video uploader
类载波中定义了一个回调
after :store, :my_method
我有三个版本的文件。 original
,standard
,low
my_method
,即三次,我只需要回调执行一次。
答案 0 :(得分:8)
我知道这是一个非常晚的回复,但我最近遇到了同样的问题所以我决定发布我是如何解决这个问题的#34;问题"因为它似乎没有在carrierwave的github页面上记录(或者我无法找到它)。
好的,关于after :store, :my_method
回调,如果你把它放在"主体"你的上传程序类,然后它会在每次存储文件时执行,所以在你的情况下我认为它甚至不仅针对你的3个版本而且针对你的原始文件执行。
我们假设以下代码定义了您的运载波上传器:
class PhotoUploader < CarrierWave::Uploader::Base
after :store, :my_method
version :original do
process :resize_to_limit => [1280,960]
end
version :standard, from_version: :original do
process :resize_to_limit => [640,480]
end
version :low, from_version: :standard do
process :resize_to_limit => [320,240]
end
protected
def my_method
puts self.version_name
end
end
这样,after :store
将针对存储的每个文件执行,但是如果您只想执行它,那么请说明,对于:low
版本,所有人必须做的是在你的版本定义中移动该行。像这样:
class PhotoUploader < CarrierWave::Uploader::Base
version :original do
process :resize_to_limit => [1280,960]
end
version :standard, from_version: :original do
process :resize_to_limit => [640,480]
end
version :low, from_version: :standard do
process :resize_to_limit => [320,240]
after :store, :my_method
end
protected
def my_method
puts self.version_name
end
end
我在我的代码上对它进行了测试并且它有效...我知道自从你发布这个问题以来已经很长时间了,可能你和我达成了同样的解决方案。因此,我决定回答它,以便将来遇到同样问题的人参考。