मेरे पास पहले_सेव विधि है जिसे मैं कॉल करता हूं जो अपलोड की गई छवि का नाम बदलता है।रेल: अगर कुछ शर्तों को पूरा किया जाता है तो मैं केवल पहले_सेव कैसे चला सकता हूं?
before_save :randomize_file_name
def randomize_file_name
extension = File.extname(screen_file_name).downcase
key = ActiveSupport::SecureRandom.hex(8)
self.screen.instance_write(:file_name, "#{key}#{extension}")
end
यह विधि मेरे Item
मॉडल का हिस्सा है।
जब मैं कोई नया आइटम बनाता हूं या किसी आइटम से जुड़े छवि को अपडेट करने की आवश्यकता होती है तो यह बहुत अच्छा काम करता है ... लेकिन समस्या यह है कि अगर मुझे कोई आइटम अपडेट करने की आवश्यकता है लेकिन छवि नहीं है, तो randomize_file_name
विधि अभी भी चलती है और डेटाबेस में फ़ाइल का नाम बदलता है (हालांकि फाइल स्वयं ही नहीं है)।
तो, मुझे लगता है कि अगर फ़ाइल फॉर्म जमा करने में फ़ाइल शामिल है तो मुझे केवल randomize_file_name
चलाने का एक तरीका पता लगाने की आवश्यकता है ... लेकिन मुझे यकीन नहीं है कि इसे कैसे खींचें।
यहां अधिक विस्तृत दस्तावेज: http://apidock.com/rails/ActiveRecord/Dirty –
यह इसे या तो नहीं मिलेगा। क्या होगा यदि उपयोगकर्ता एक ही फ़ाइल नाम के साथ एक नई फाइल अपलोड करता है? इस मामले में file_name समान होगा लेकिन आप एक अलग कुंजी चाह सकते हैं। –