我想知道如何检查数组元素是否存在于MongoMapper数组中。 This question是我能找到的最接近的,但它解决了查询问题,而不是简单地使用您已有的文档。你怎么称呼“包含?”在Rails 3中的MongoMapper数组?
我的用户模型包含线
key :roles, Array
的“角色”数组包含字符串,如“管理”或“用户”。对于授权,我需要调用类似下面的方法对用户的一个实例:
if user.roles.contains?('admin')
# Do administrative stuff.
end
但是,当我尝试调用“包含?”红宝石抱怨说,有没有这样的方法:“包含”
NoMethodError (undefined method `contains?' for #<Array:0x007fc845cd8948>):
app/models/ability.rb:11:in `initialize'
app/controllers/settings_controller.rb:5:in `index'
如果没有办法做到这一点,那么我该如何转换数组一个Ruby数组打电话?调用to_a不这样做:
if user.roles.to_a.contains?('admin') # etc...
我使用Rails 3.2.13和Ruby-1.9.3-P392,并在山狮MongoMapper 0.12.0。
我不熟悉的MongoDB所以这个建议是noobish。 'user.roles'返回的结果是什么? – jason328 2013-05-13 01:04:22
答案是...... Ruby数组没有'contains?'方法。它被称为'include?'。唉...... – 2013-05-13 01:06:30
@ jason328它正在返回'#'。无论如何,我的愚蠢的错误不知道正确的方法名称。 –
2013-05-13 01:07:41