2013-09-07 5 views
1

J'essaye de sauvegarder mes fichiers attachés à s3 - mais au lieu de: l'identifiant étant sauvegardé dans le chemin, je voudrais utiliser le: slug qui est écrit dans la base de données à partir de la gemme friendly_id. Mais quand je mets: slug dans le chemin, j'obtiens un dossier nommé: slug plutôt que la variable: slug.rails trombone has_attached_file chemin avec: slug?

Je suis curieux de savoir comment insérer le slug dans l'emplacement où l'image est enregistrée. Curieux aussi sur les paramètres qui sont exposés à un trombone lorsque has_attached_file est appelé.

Répondre

2

Vous devez utiliser des interpolations trombones. Cela fonctionne pour moi avec paperclip 3.5.2

class User < ActiveRecord::Base 
    extend FriendlyId 
    friendly_id :name, use: [ :slugged, :finders ] 

    Paperclip.interpolates :slug do |attachment, style| 
    attachment.instance.slug 
    end 

    has_attached_file :picture, 
    styles: { large: "512x512!", medium: "256x256!", thumb: "128x128!" }, 
    default_url: "/images/:class/:style/missing.png", 
    hash_secret: "xxxxxxxxxxxxxxxxxxxxxx", 
    url: "/system/:class/:attachment/:slug/:style/:hash.:extension", 
    path: ":rails_root/public/system/:class/:attachment/:slug/:style/:hash.:extension" 
end 

Il démontre également l'utilisation des noms de fichiers hachés pour cacher des informations privées au nom de fichier. L'URL et le chemin doivent correspondre, sauf si vous configurez un routage sur le serveur Web pour obtenir le nom de fichier à partir de l'URL.

Questions connexes