0

如果我想调用一个类方法(rails 中的邮件方法),在变量中提供它的名称。我怎样才能做到这一点?对于对象,我们可以使用send,或者我们可以使用read_attribute来读取一些值

my_object.send("#{self.action_type(self)}")
my_object.read_attribute("#{self.action_type}_email") 

但是对于类名,没有任何东西像send对象类中定义的实例方法那样工作。我想要这样的东西,因为send不能应用于课堂:

Notifier.send("#{self.action_type(self)}").deliver
4

4 回答 4

3

采用eval

eval("Notifier.#{self.action_type}(self).deliver")

不安全,但应该可以。

于 2013-03-05T12:57:52.387 回答
2

你也可以这样做:

method = Notifier.method(action_type)
method.call(self).deliver
于 2013-03-05T13:04:23.317 回答
2

类是对象。申请方式没有区别send

Notifier.send(action_type, self).deliver
于 2013-03-05T13:14:27.777 回答
0

你也可以使用

self.class.send(:your_class_method)

于 2013-03-05T13:08:43.737 回答