版本時,如何跳過carrierwave店回調我有我的video uploader
類的carrierwave
after :store, :my_method
定義的回調,我有文件的三個版本。 original
,standard
,low
處理
my_method
執行時,每個版本處理,即三次,我只需要回調執行一次。
版本時,如何跳過carrierwave店回調我有我的video uploader
類的carrierwave
after :store, :my_method
定義的回調,我有文件的三個版本。 original
,standard
,low
處理
my_method
執行時,每個版本處理,即三次,我只需要回調執行一次。
我知道這是一個非常晚的反應,但我最近剛剛遇到同樣的問題,所以我決定發佈我如何解決這個「問題」,因爲它似乎沒有記載在carrierwave的github頁面上(或者我不是'無論如何都能找到它)。
好吧,關於after :store, :my_method
回調,如果你把它放在你的上傳類的「主體」中,那麼它將在每次存儲文件時執行,所以在你的情況下,我認爲它不僅執行爲您的3個版本,但也爲您的原始文件。
比方說,下面的代碼定義你的carrierwave上傳:
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
我測試我的代碼和它的作品......我知道這是一個很長的時間,因爲你張貼了這個問題,也許你得出了相同的解決方案我。所以我決定回答它,以供將來參考,以供任何人獲得相同的問題。
您是否找到了解決方案?我有個類似的問題 – Alain