2011-06-13 5 views
3

En tant que vétéran de MongoDB, j'ai créé la structure suivante:MongoId avec "clé étrangère"

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

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

    name: str 
    ... 
} 

Et je voudrais mapper ce bien dans MongoId:

class User 
    include Mongoid::Document 

    has_many :gifts 
end 

class Gift 
    include Mongoid::Document 

    belongs_to :user 
end 

Cependant, la la cartographie n'est pas correcte. g = Gift.first; g.author n'est pas défini. Comment est-ce que je fais le référencement?

Techniquement, il est:

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

(ce qui signifie un utilisateur peut être l'auteur de nombreux cadeaux, et un utilisateur peut être le récepteur de nombreux cadeaux, mais un don ne peut avoir que 1 auteur et récepteur).

Aide Plz !!!

Répondre

5

Vous aurez probablement plus de chance avec Rails si cadeau ressemble à ceci:

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

    name: str 
    ... 
} 

Et puis, ajoutez un :foreign_key Gift:

class Gift 
    include Mongoid::Document 

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

ouais je ne savais pas que: foreign_key fonctionnera sans enregistrements actifs (je me rends compte qu'ils sont également définis dans mongoid) – disappearedng

Questions connexes