2009-05-06 1 views
0

Dans mon contrôleur d'application, j'ai une méthode supposée vérifier l'existence d'une autre méthode dans un contrôleur sous-classé pour définir le nom de fichier d'un fichier téléchargé, mais j'ai du mal à le faire fonctionner correctement. « ai essayéComment puis-je vérifier l'existence d'une méthode dans un contrôleur d'application de rails?

def filename 
    begin 
    send "filename_method" 
    rescue NoMethodError 
    default_filename 
    end 
end 

et

def filename 
if respond_to?("filename_method") 
    send "filename_method" 
else 
    default_filename 
end 
end 

mais les deux reviennent toujours default_filename, même si filename_method est défini dans le contrôleur sous-classé. Quelqu'un peut-il me diriger dans la bonne direction ici?

Merci,

C

Répondre

2

Je suppose que cela est dû au fait que le contrôleur superclasse ne connaît pas l'existence des méthodes de la sous-classe. Vous pouvez le confirmer en inspectant le tableau methods de la sous-classe.

Il semble que la solution soit de reconsidérer votre conception. Au lieu de vérifier l'existence de filename_method, fournissez simplement le comportement de nom de fichier par défaut dans la méthode de base filename et substituez la méthode filename dans la sous-classe pour fournir une fonctionnalité de nom de fichier personnalisé.

Par exemple, dans votre superclasse:

def filename 
    # return default file name 
end 

Et dans votre sous-classe:

def filename 
    # return custom file name 
end 
+0

lol, bah, j'aurais pensé en premier lieu, merci :) - C –

Questions connexes