Ruby - 如何从一组方法名称中循环执行方法

时间:2013-02-20 22:07:47

标签: ruby ruby-on-rails-3 rspec-rails

我对Ruby和rails很新,所以我不太确定如何以“正确的方式”做事,但我有几个来自Rspec的方法(get,post,put,delete)我想通过到一个数组,所以我可以循环它们每次执行相同的代码。 我认为这很容易,但我无法弄清楚如何去做。

有谁知道这是否可行,良好做法以及如何做到这一点?

2 个答案:

答案 0 :(得分:4)

['get', 'post', 'put', 'delete'].each {|m| obj.send(m) }

我看到在Ruby项目中经常这样做的事情。

答案 1 :(得分:0)

  class Message
    def method1
      #something
    end

    def method2
      #something
    end   
  end

  message = Message.new
  methods = [ 'method1', 'method2' ]

  methods.each{ |method| message.send(method) }

或者您可以在声明方法时使用符号而不是字符串,因为它更具惯用性

最佳做法是使用public_send而不是send,除非您实际上尝试调用私有方法。