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)

(编辑)或使用 ismaelga 建议的发送,如果您不想要 ActiveRecord::Relation 数组对象

于 2012-08-07T02:08:58.773 回答
0

你可以做eval(m.capitalize).send("find_by_#{variable_name}", variable_content)

大写它只是为了确保它得到一个大写字母。

于 2012-08-07T02:18:49.907 回答