J'ai deux classesGet classe par son nom dans Ruby
class ClassOne
def do_something
[...]
end
end
class ClassTwo
def do_something
[...]
end
end
Je reçois un nom de classe (soit ClassOne ou ClassTwo) de la base de données et je veux appeler do_something
dans cette classe
donc je ai
class_name = "ClassOne"
et je veux appeler ClassOne.do_something
ou ClassTwo.do_something
si class_name est égal à "ClassTwo".
je ne peux pas le faire à l'aide d'un simple si la condition, j'ai beaucoup de classes et je vérifie si la classe existe avant d'appeler ..
Est-il possible de le faire?
Je reçois une 'méthode non définie 'do_something' pour # (NoMethodError)' Une idée pourquoi? –
applechief
Vous devez 'def self.do_something' pour l'utiliser comme méthode de classe. – sgtFloyd
Ou laisser les classes sont elles et appellent 'Kernel.const_get ('ClassOne'). New.do_something' /' 'ClassOne'.constantize.new.do_something' –