J'ai le code method_missing
suivants mis en œuvre dans un modèle:plusieurs arguments pour method_missing
# class Thought
def self.method_missing(method_id, *arguments, &block)
if $CLIENT.respond_to?(method_id)
$CLIENT.send(method_id, *arguments, &block)
# Do some stuff with it
else
super
end
end
$CLIENT
est un objet global. Notez que ceci est method_missing
pour la classe , pas l'instance.
J'ai essayé les éléments suivants dans le script/console:
>> $CLIENT.respond_to?(:my_thoughts)
=> true
>> $CLIENT.send(:my_thoughts, 'bob', 5)
=> #<#<Class:01xe229be>:0x241391>
>> Thought.send(:my_thoughts, 'bob', 5)
ArgumentError: wrong # of arguments(1 for 2)
from [filepath]:50:in `method_missing'
from (irb):4
Est-je quelque chose douloureusement évident me manque ici? Je cours ceci sur Rails 2.3.8 et jRuby si cela fait une différence.
Modifier: Cela me embrouille encore plus:
>> Thought.send(:my_thoughts, 'bob', 5, 5)
ArgumentError: wrong # of arguments(3 for 2)
from [filepath]:50:in `method_missing'
from (irb):23
Remplacement du deuxième argument avec autre chose qu'un entier semble fonctionner, mais bien sûr l'argument est censé être un entier ... I Je suspecte maintenant un problème dans jRuby ou les classes de Java que j'ai intégrées dans ceci.
Merci pour votre montage - j'allais dire, ce n'est pas toute l'histoire. J'ai testé le code que vous avez donné ci-dessus, et cela fonctionne très bien. la ligne 50 réelle du fichier avec method_missing en révélerait beaucoup. –