に名前でクラスを取得します私はので、私は、データベースからクラス名(ClassOneまたはClassTwoのいずれか)を取得していますし、私はそのクラスにルビー
をdo_something
を呼び出したい二つのクラス
class ClassOne
def do_something
[...]
end
end
class ClassTwo
def do_something
[...]
end
end
を持っています
class_name = "ClassOne"
を持っていると私はCLASS_NAMEがある場合ClassOne.do_something
またはClassTwo.do_something
を呼び出したいことは、 "ClassTwo" に等しいです。私があれば、簡単な条件を使用してそれを行うことはできません
、私は多くのクラスがあり、クラスが呼び出す前に存在しているかどうかをチェックしています。..
はそれを行うためにそこに方法は何ですか? Railsのために
Kernel.const_get('ClassOne').do_something
:バニラRuby用
私は '' Class:0x9c9026c>( '' NoMethodError) 'に対して' '未定義のメソッド 'do_something'を取得しています。 – applechief
クラスメソッドとして使用するには、 'def self.do_something'する必要があります。 – sgtFloyd
またはクラスをそのまま残して、 'Kernel.const_get( 'ClassOne')を呼び出します。new.do_something' /' 'ClassOne'.constantize.new.do_something' –