私は作成しているコールでClassオブジェクトを取得しようとしていますが、私が見つけることができる唯一の場所はparams[:controller]
です。しかし、これは文字列を返します。文字列だけで利用できるクラスを見つけることができますか?
文字列だけでClassオブジェクトを見つけることはできますか?
私は作成しているコールでClassオブジェクトを取得しようとしていますが、私が見つけることができる唯一の場所はparams[:controller]
です。しかし、これは文字列を返します。文字列だけで利用できるクラスを見つけることができますか?
文字列だけでClassオブジェクトを見つけることはできますか?
あなたはconst_get
との組み合わせで、あなたが必要なものであるべき、適切な名前の定数に文字列を変換するために使用することができますclassify方法があります。
:ここでは簡略化した例、Iは、現時点で入手可能なレールコンソールを持っていませんObjectSpace.const_get( "アレイ" .capitalize).new#=> []
Railsのようなもの
"array".classify.constantize.new
でも動作します。
string to classには、string.constantizeを使用できます。しかし、要求を処理している現在のコントローラオブジェクトを探していますか?
あなたはこの方法でクラスに文字列を変換することができます
"class".capitalize.constantize
これはRails/ActiveSupportなしで行う方法です。
def constant_from_full_name(name)
name.split("::").inject(::Object) do |const_so_far, name_fragment|
const_so_far.const_get(name_fragment)
end
end
constant_from_full_name("Some::Path::To::My::Class")
どこからコールしていますか、パラメータとして渡そうとしているものは何ですか?あなたがコントローラにいれば、 'self'を使います。それはコントローラを回すことは素晴らしいアイデアだと私は思っています。 –