2010-11-07 9 views
3

J'ai deux scénarios pour utiliser Paperclip, mais je ne suis pas sûr de savoir comment modifier les paramètres ou si c'est possible ou même nécessaire. Besoin de l'avis de professionnels plus expérimentés sur celui-ci.Rails: question Paperclip concernant les noms de colonne

Tout d'abord, j'ai un modèle de document pour le téléchargement tels que PDF, qui serait défini:

has_attached_file :document... 

Cela me donne les noms des colonnes comme @ document.document_file_name. De toute façon que je pourrais avoir @ document.file_name à la place?

Deuxièmement, j'ai Gallery.rb qui a beaucoup de Picture.rb. Même scénario ici aussi. Puis-je éviter d'avoir @ picture.picture_file_name? Ou est-ce quelque chose qui devrait vraiment être négligé avec les gains que Paperclip offre.

Merci d'avance pour toute contribution.

Répondre

3

Mon opinion à ce sujet: Le document réel (fichier PDF) n'est pas la même chose qu'un enregistrement de document (qui comprend le document physique plus les métadonnées). Il est donc logique de voir la pièce jointe Paperclip en tant qu'attribut du modèle et d'appeler ses méthodes après l'attribut, et de ne pas opérer sur l'enregistrement du modèle lui-même.

Une de mes applications a un modèle Document avec un fichier joint aussi, et j'ai simplement appelé l'attribut attachment.

Si cela est trop un inconvénient pour vous, vous pouvez toujours mettre en œuvre vos propres getters dans le modèle:

class Document < ActiveRecord::Base 
    has_attached_file :attachment # ... or whatever you are calling it 

    def file_name 
    self.attachment.file_name 
    end 

    def file_size 
    self.attachment.file_size 
    end 

    def file_type 
    self.attachment.file_type 
    end 
end 
+0

Merci, Chris.Votre explication m'a aidé à la mettre en perspective et en tant que tel, je vais juste utiliser les valeurs par défaut - pas besoin de définir des getters supplémentaires – TMB

1

La gemme Paperclip nécessite trois attributs sur l'objet associé.

  1. attribute_file_name
  2. attribute_file_size
  3. attribute_file_type

attribute Bien sûr, si le nom de votre fichier et il est le has_attached_file :attribute déposé communément appelée image, quel que soit.

Si vous voulez changer l'un de ces noms, vous devez modifier le bijou lui-même qui semble fou pour juste changer le nom de l'attribut :)

+0

Merci, votre explication m'a aidé à voir Chris avec plus de clarté. – TMB

0

Voici les méthodes que je devais créer:

{attribute}_file_name 
{attribute}_file_size 
{attribute}_content_type 
{attribute}_updated_at