2010-08-27 54 views
0

我正在使用Mongoid並有一個項目和一個用戶模型。 在項目模型中,我有一個字段如何實現mongodb'包括?'查找條件

class Project 
    include Mongoid::Document 
    field :name 
    field :user_ids, :type => Array 
end 

class User 
    include Mongoid::Document 
    field :email 
end 

我能找到的所有用戶屬於一個項目,即「發現這個項目的用戶

@project = Project.first # => 'Housework' 
User.criteria.id(@project.user_ids) # => ['Bart','Lisa','Maggie'] 

但我有一點麻煩發現所有屬於一個用戶的項目,即「發現該用戶的項目」

@user = User.first # => 'Bart' 
Project.where(:user_ids => @user.id) # doesn't work 
Project.where(:user_ids.includes => @user.id) # not such method 
Project.where(:user_ids => [@user.id]) # doesn't make sense to compare arrays, but tried anyway and doesn't work 

我知道,你可以在用戶模型中的其他字段來存儲project_ids,我禾很高興做到這一點,但我只是好奇,是否有一種方法可以在與#includes類似的查找條件中使用?在紅寶石?

回答

0

我找到了解決方案。它是all_in finder方法

例如:

Fruit.all[0].colors = ['red','green','blue'] #=> apple 
Fruit.all[1].colors = ['yellow','green']  #=> banana 

Fruit.all[2].colors = ['red', 'yellow']  #=> pineapple 

要查找具有在它們的 '顏色' 陣列字段紅色所有的水果,一個可以查詢:

Fruit.all_in(:colors => ['red']) 

=> [蘋果,菠蘿]