4

文字列を使用して、使用するモデル クラスと find_by() するフィールドを動的に決定するコードがあります。ただし、これらの変数を使用してモデル インスタンスを取得する方法に苦労しています。具体的には、私は持っています

class Item
  include MongoMapper::Document
  key :my_variable, String

私のコードでは

m = "Item"
f = "my_variable"

そして、私はできるようになりたいです

i = m.find_by_my_variable( f )
result = i[f]

どんな助けでも大歓迎です!

4

2 に答える 2

6

Railsにいるので(カテゴリタグで判断)、次を使用できます。

m = m.constantize

文字列を定数にするために、このようなものがクエリで機能しますか?

m.where("#{f} = ?", some_value)

(編集) または、ActiveRecord::Relation 配列オブジェクトが必要ない場合は、ismaelga が提案するように send を使用します。

于 2012-08-07T02:08:58.773 に答える
0

あなたができるeval(m.capitalize).send("find_by_#{variable_name}", variable_content)

大文字にするのは、大文字になることを確認するためだけです。

于 2012-08-07T02:18:49.907 に答える