我想知道如何檢查數組元素是否存在於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