rails变量名称的引用模型

时间:2012-08-07 01:04:55

标签: ruby-on-rails model variable-assignment

我有一些代码使用字符串来动态确定要使用的模型类以及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]

任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:6)

由于您在Rails中(根据类别标记判断),您可以使用:

m = m.constantize

使字符串成为常量,然后这样的内容可以用于查询吗?

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

(编辑)或使用send as ismaelga建议,如果你不想要一个ActiveRecord :: Relation数组对象

答案 1 :(得分:0)

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

将其资本化只是为了确保它获得大写字母。