如何使用方法名称ruby的对象属性值

时间:2011-08-23 04:25:44

标签: ruby ruby-on-rails-3

我有两个邮寄

welcome_manger(user)  welcome_participant(user)

两者都发送不同的信息并具有不同的布局。

当我调用传递方法时,我想使用类似下面的内容

UserMailer.welcome_self.role(self.user)

这不起作用。我怎么能做到这一点?

1 个答案:

答案 0 :(得分:2)

或许这样的事情:

m = 'welcome_' + self.role
UserMailer.send(m.to_sym, [self.user])

假设self.role返回一个字符串。

send方法按名称调用方法:

  

<强> obj.send(symbol [, args...]) → obj
  调用 symbol 标识的方法,并将指定的参数传递给它。

因此,您只需要将相应的方法名称构建为字符串,然后使用to_sym将其转换为符号。