मैं इस पार आया, और यह कैसे इस समस्या को हल करने का एक उदाहरण की तरह दिखता है: https://gist.github.com/995663।
जब आप mount_uploader
पर कॉल करते हैं तो अपलोडर पहले लोड हो जाता है, जिस बिंदु पर if image?
या elsif video?
जैसी चीजें काम नहीं करेंगे, क्योंकि अभी तक परिभाषित अपलोड करने के लिए कोई फ़ाइल नहीं है। कक्षा को तत्काल चालू होने पर आपको कॉल करने के तरीकों की आवश्यकता होगी।
क्या लिंक मैं ऊपर दे दी है, process
विधि को फिर से लिखने, इतना है कि यह फ़ाइल एक्सटेंशन की सूची लेता है, और प्रक्रियाओं आपकी फ़ाइल से मेल खाता है केवल यदि उन एक्सटेंशन में से एक
# create a new "process_extensions" method. It is like "process", except
# it takes an array of extensions as the first parameter, and registers
# a trampoline method which checks the extension before invocation
def self.process_extensions(*args)
extensions = args.shift
args.each do |arg|
if arg.is_a?(Hash)
arg.each do |method, args|
processors.push([:process_trampoline, [extensions, method, args]])
end
else
processors.push([:process_trampoline, [extensions, arg, []]])
end
end
end
# our trampoline method which only performs processing if the extension matches
def process_trampoline(extensions, method, args)
extension = File.extname(original_filename).downcase
extension = extension[1..-1] if extension[0,1] == '.'
self.send(method, *args) if extensions.include?(extension)
end
फिर आप उपयोग कर सकते हैं यह क्या
IMAGE_EXTENSIONS = %w(jpg jpeg gif png)
DOCUMENT_EXTENSIONS = %(exe pdf doc docm xls)
def extension_white_list
IMAGE_EXTENSIONS + DOCUMENT_EXTENSIONS
end
process_extensions IMAGE_EXTENSIONS, :resize_to_fit => [1024, 768]
संस्करणों के लिए की प्रक्रिया हुआ करता था कॉल करने के लिए, वहाँ carrierwave विकी, आप सशर्त प्रक्रिया संस्करणों के लिए अनुमति देता है, तो आप> 0.5.4 पर हैं पर एक पृष्ठ है। https://github.com/jnicklas/carrierwave/wiki/How-to%3A-Do-conditional-processing। आप इस तरह देखने के लिए संस्करण कोड बदलना होगा:
version :big, :if => :image? do
process :resize_to_limit => [160, 100]
end
protected
def image?(new_file)
new_file.content_type.include? 'image'
end
मैं इसे आज़माने के लिए कर रहा था ... मैं अपने जवाब – keithepley
कोई अन्य अपडेट में अपडेट कर देंगे ... पता लगा कि कैसे चुनिंदा का ख्याल रखना संस्करण बनाना – keithepley
बहुत बढ़िया! धन्यवाद! – manzhikov