2010-06-26 5 views
0

J'ai un module CommonFunctions dans le dossier lib /. J'ai un modèle de question, qui inclut le module CommonFunctions. Maintenant, j'essaie d'accéder à la fonction favorite des CommonFunctions comme Question.favorite. Mais je reçois NoMethodError. J'ai inclus le code. Quelqu'un peut-il s'il vous plaît me dire où je fais l'erreurModule Ruby Inclure la question

Erreur

NoMethodError: undefined method `favorite' for Class:0x00000100e11508 

intérieur lib/CommonFunctions.rb

module CommonFunctions 
    def favorite(object_id) 
    end 
end 

intérieur app/modèles/Question.rb

require 'lib/CommonFunctions.rb' 
class Question 
    extend CommonFunctions 
end 

J'exécute le code suivant à partir du script/console

Question.favorite(1) 

Merci


Ce fut un double de How do I properly include a module and call module functions from my Rails model?

Répondre

2

Votre code est correct. Assurez-vous que la version actuelle des classes est chargée dans la console (essayez reload!).

En tant que sidenote: si vous renommez CommonFunctions.rb en common_functions.rb, il sera automatiquement chargé par des rails et vous n'avez pas besoin de require.

+0

Merci beaucoup :) – felix

1

La méthode module est une méthode d'instance lorsque vous voulez qu'elle soit une méthode de classe. Utilisez le code ci-dessous à la place

module CommonFunctions 
    def self.favorite(object_id) 
    end 
end 

L'utilisation du mot « auto » définit la méthode comme une méthode de classe (ou statique)