2010-05-27 5 views
0

Je veux exécuter une méthode de paperclip sur créer seulementrails: exécution d'une méthode sur seulement créer

has_attached_file :file 

Cette méthode ne semble pas accepter: on =>: créer que d'autres méthodes de rails font.

J'ai essayé:

before_create 
after_create 

etc, mais ceux ne fonctionnent pas.

J'ai aussi fait:

if :create 

Comment puis-je vérifier si le contrôleur utilise la méthode create à partir du modèle?

Merci!

+0

Etes-vous en train d'essayer de valider le fichier quelque part? Pourquoi le fichier doit-il être disponible uniquement lors de la création? – BaroqueBobcat

+0

J'ai un ajout sftp à un trombone et c'est appelé à la mise à jour (comme quand quelqu'un met à jour une légende de photo). Donc, pour les mises à jour de texte à l'enregistrement, je ne veux pas les choses de fichier à traiter. – djburdick

Répondre

1

Lorsque vous utilisez has_attached_file :file. Il y a 2 nouveaux rappel et vous pouvez l'utiliser:

before_file_post_process 
after_file_post_process 

Vous pouvez donc l'utiliser et vérifier si vous l'objet est dans la création ou non avec new_record?

Le before_create et after_create sont présents allway, mais indépendante de votre pièce jointe.

+0

Je voudrais que has_attached_file ne soit même pas appelé à moins qu'il ne soit créé – djburdick

+0

Vous ne comprenez pas ce que 'has_attached_file' fait. Il est appelé une seule fois, lorsque le fichier de classe est chargé, et ce qu'il fait est de créer un chargement d'autres méthodes et variables qui permettent à l'objet de traiter les pièces jointes à différents points de la durée de vie de l'objet. Ainsi, la prochaine étape est de travailler et d'expliquer spécifiquement ce que vous voulez seulement arriver à créer. – Gareth

+0

à droite. Je comprends que c'est seulement appelé une fois, mais je veux seulement qu'il soit appelé quand la méthode de création dans le contrôleur est appelée - pas une autre fois le modèle est appelé. Quand un utilisateur met à jour uniquement le texte associé à un fichier, il appelle toujours le fichier de transfert de données (j'ai modifié paperclip pour utiliser sftp) – djburdick