0

クラスメソッド(レールのメーラーメソッド)を呼び出したい場合は、その名前を変数に指定します。どうやってやるの?オブジェクトの場合、 を使用する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 に答える