2013-03-23 2 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

User 속성은 일반 모델과 마찬가지로 groups 속성을 쿼리 할 수 ​​있습니다. 예를 들어,이 ID로 특정 Group 찾으려면 :

my_user.groups.find(group_id) 

where와 쿼리도 가능합니다 :

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