2011-06-13 4 views
3

하여 MongoDB의 베테랑으로하여, 나는 다음과 같은 구조를 만들었습니다는 Mongoid "외래 키"

User: { 
    name: str, 
    email: ... 
} 

Gift: { 
    # author and receiver refer to User objects obviously 
    author: object_id(...),  
    receiver: object_id(...), 

    name: str 
    ... 
} 

을 그리고 mongoid에서 제대로이지도 싶습니다 :

class User 
    include Mongoid::Document 

    has_many :gifts 
end 

class Gift 
    include Mongoid::Document 

    belongs_to :user 
end 

그러나, 매핑이 올바르지 않습니다. g = Gift.first; g.author가 정의되지 않았습니다. 참조는 어떻게합니까?

User <--- 1: N via author---> Gift <--- N:1 via receiver---> User 

가 (사용자를 의미하는 것은 많은 선물의 저자가 될 수 있으며, 사용자가 많은 선물의 수신기가 될 수 있지만, 선물은 1 저자와 수신기를 가질 수) :

기술적으로, 그것은이다.

Plz help !!! 선물이 보이는 경우

답변

5

당신은 아마 레일 더 나은 행운을해야합니다 :

Gift: { 
    # author and receiver refer to User objects obviously 
    author_id: object_id(...),  
    receiver_id: object_id(...), 

    name: str 
    ... 
} 

그리고 나서, :foreign_key 선물에 추가 :

class Gift 
    include Mongoid::Document 

    belongs_to :user, :foreign_key => 'author_id' 
end 
+0

그래 난 몰랐어 : foreign_key를 능동적 인 기록 없이도 작동 할 것입니다 (나는 그들이 mongoid에서도 정의됨을 알고 있습니다) – disappearedng