Yüklediğim bir görüntüyü yeniden adlandırdığım, aradığım bir before_save yöntemim var.Raylar: Yalnızca belirli koşullar karşılanırsa bir before_save nasıl çalıştırırım?
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
Bu yöntem benim Item
modelimin bir parçasıdır.
Yeni bir öğe oluşturduğumda veya bir öğeyle ilişkili görüntüyü güncellemem gerektiğinde bu harika çalışıyor ... ancak sorun şu ki, bir öğeyi güncellemem gerekirse ancak görüntüyü randomize_file_name
yöntemi çalıştırıyor ve dosyayı veritabanında yeniden adlandırır (açıkçası dosyanın kendisi değil).
Yani, bir dosya form gönderiminde yer alıyorsa, yalnızca randomize_file_name
'u çalıştırmanın bir yolunu bulmam gerektiğini düşünüyorum ... ama bunu nasıl yapacağımı bilmiyorum.
Daha ayrıntılı belgeler burada: http://apidock.com/rails/ActiveRecord/Dirty –
Bu da onu almayacak. Kullanıcı aynı dosya adına sahip yeni bir dosya yüklerse ne olur? Bu durumda dosya_adı aynı olacak ancak farklı bir anahtar isteyebilirsiniz. –