Ruby 如何调用存储在变量中的类方法

Ruby 如何调用存储在变量中的类方法,ruby,class-method,Ruby,Class Method,如果我想调用一个类方法(rails中的mailer方法),在变量中提供它的名称。我该怎么做?对于对象,我们可以使用send,也可以使用read\u属性读取一些值 my_object.send("#{self.action_type(self)}") my_object.read_attribute("#{self.action_type}_email") 但对于类名,由于对象类中将send定义为实例方法,所以没有任何功能。我想要这样的东西,因为send不能应用于类: Notifier.sen

如果我想调用一个类方法(rails中的mailer方法),在变量中提供它的名称。我该怎么做?对于对象,我们可以使用
send
,也可以使用
read\u属性
读取一些值

my_object.send("#{self.action_type(self)}")
my_object.read_attribute("#{self.action_type}_email") 
但对于类名,由于对象类中将
send
定义为实例方法,所以没有任何功能。我想要这样的东西,因为
send
不能应用于类:

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

eval("Notifier.#{self.action_type}(self).deliver")
不安全,但它应该可以工作。

您还可以执行以下操作:

method = Notifier.method(action_type)
method.call(self).deliver
你也可以使用


self.class.send(:您的\u class\u方法)
类是对象。应用
发送的方式没有区别

Notifier.send(action_type, self).deliver

答案需要一个小的修正,然后它就成功了。。作为回答,我做了那个修改。非常感谢。太好了……)这不是让这个问题变得毫无价值吗?你为什么在问题中说send在课堂上不起作用/@MikeCampbell你不必为这个错误责怪OP。知道类是对象,因此
send
确实对它们起作用是一个很好的成就。我不是在“责怪”OP,我只是在质疑一个问题的价值,在这个问题上,公认的答案与问题的前提相矛盾。