2010-03-09 5 views
3

dans Rails utilisant la version polymorphique de Paperclip, la technique d'enregistrement par défaut signifie que les fichiers portant le même nom se remplacent mutuellement. Y compris le: id dans le chemin et l'URL ne fonctionne pas car il remplace simplement le fichier précédent avec l'ancien: id. J'ai essayé des interpolations en utilisant un horodatage, mais il ne cherche que l'heure actuelle lorsque l'image est montrée (et comme j'ai plusieurs vignettes, cela prend plus d'une seconde, donc les images ont des tampons différents).Paperclip Polymorphic écrasant des fichiers avec les mêmes noms

Paperclip.interpolates :uniqueid do |attachment, style| 
    Time.now.to_i.to_s 
end 

a également essayé en utilisant un numéro hexadécimal, mais il fait passer dans chaque pouce, brisant ainsi comme il y a une nouvelle valeur hexadécimale à chaque fois.

Paperclip.interpolates :uniqueid do |attachment, style| 
    ActiveSupport::SecureRandom.hex(3) 
end 

Comme il est la version polymorphes, et a donc son propre modèle, je ne sais pas comment accéder aux valeurs du modèle parent (dans ce cas, « Post »). Les variations sur le code ci-dessous tous vomissent des erreurs "méthode non définie".

Paperclip.interpolates :user_id do |attachment, style| 
    current_user.id 
end 

Désolé si cela semble une question de débutant, mais il est bien document pour la Paperclip traditionnelle, mais rien est là pour la fourche polymorphes.

Répondre

0

Que diriez-vous, y compris :class dans le :path pour has_attached_file?

has_attached_file :attachment, 
    :path => ":rails_root/attachments/:class/:id/:attachment/:basename.:extension", 
    :url => "downloads/:id/:title.:extension" 
+0

Et si vous avez plusieurs fichiers pour la même instance de classe et de modèle? – JosephK

Questions connexes