2013-03-23 50 views
0

有沒有更好的方式來做到這一點?如何訪問/選擇mongoid特定嵌入文檔?

class User 
    embeds_many :groups 

    def group(group_id) 
     gid = Moped::BSON::ObjectId(group_id) 
     self.groups.each.detect{|group| group.id == gid} 
    end 
end 

class Group 
    embedded_in :user 
end 

我訪問組以這樣的方式

User.new.group(group_id) 

如果用戶有1000個嵌入式組(假設),那麼這是否意味着我將不得不通過他們的1000迭代?有沒有更好的方法來訪問特定的組?

回答

2

可以查詢的Usergroups財產就像一個正常的模式。例如,如果你想找到其ID的特定Group

my_user.groups.find(group_id) 

where查詢也是可能的:

my_user.groups.where(id: group_id).first