web-dev-qa-db-fra.com

Ruby convertit une chaîne en nom de méthode

J'ai deux méthodes définies dans mon fichier Ruby. 

def is_mandatory(string)
      puts xyz
end
def is_alphabets(string)
      puts abc 
end 

Un tableau contenant les noms des méthodes. 

    methods = ["is_mandatory", "is_alphabets"]

Quand je fais ce qui suit 

    methods.each do |method| puts method.concat("(\"abc\")") end 

Il affiche simplement is_mandatory ("abc") is_alphabets ("abc") plutôt que d'appeler réellement la méthode. 

Comment puis-je convertir la chaîne en nom de méthode? Toute aide est grandement appréciée. 

À votre santé!!

33
verdure

Le meilleur moyen est probablement:

methods.each { |meth| send(meth, 'abc') }

Voir Object # send

52
Chowlett

Essayez d'utiliser "envoyer".

methods.each do |method| 
  self.send(method, "abc")
end 
12
Aurril

Vous pouvez également ajouter un hash pour envoyer des paramètres à la méthode.

send("method_name", "abc", {add more parameters in this hash})
0
vikas95prasad