开发者

how to use object attribute value for method name ruby

I have a two mailers

welcome_manger(user)  welcome_participant(user)

Bot开发者_运维知识库h send different information and have different layouts.

when I call the deliver method I would like to use something like the following

UserMailer.welcome_self.role(self.user)

This does not work. How can I accomplish this?


Something like this perhaps:

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

Assuming that self.role returns a String.

The send method invokes a method by name:

obj.send(symbol [, args...]) → obj
Invokes the method identified by symbol, passing it any arguments specified.

So you just need to build the appropriate method name as a string and then convert it a symbol with to_sym.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜