4

その文字列"User.first"を ActiveRecord クエリに変換する方法はありますか?

User.first

この文字列は何でもかまいません。実行可能にしたいのです。

4

2 に答える 2

3

あなたはsthのように試すことができます

Kernel.const_get("User").send('first')
于 2012-05-30T14:29:23.827 に答える
1

kernel#evalのドキュメントから:

eval(string [、binding [、filename [、lineno]]])→objクリックしてソースを切り替えます

文字列内のRuby式を評価します。Bindingオブジェクトである必要があるバインディングが指定されている場合、評価はそのコンテキストで実行されます。オプションのfilenameおよびlinenoパラメーターが存在する場合、構文エラーを報告するときにそれらが使用されます。

ただし、@ andrew-marshallが正しく指摘しているように、検証されていない入力を使用している場合、これは大きなセキュリティホールです。汚染されたデータと$SAFEレベルの詳細については、開始点としてRubyをSafeにロックするを参照してください。

于 2012-05-30T14:51:21.863 に答える