Mongoid с «внешним ключом» - PullRequest
4 голосов
/ 13 июня 2011

Как ветеран mongodb, я создал следующую структуру:

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

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

  name: str 
  ... 
}

И я хотел бы правильно отобразить это в монгоиде:

class User 
  include Mongoid::Document

  has_many :gifts
end

class Gift 
  include Mongoid::Document

  belongs_to :user
end

Однако отображение неверно. g = Gift.first; г.автор не определен. Как мне сделать ссылку?

Технически, это:

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

(то есть пользователь может быть автором многих подарков, а пользователь может быть получателем многих подарков, НО подарок может иметь только 1 автора и получателя).

Помогите плз !!!

1 Ответ

6 голосов
/ 13 июня 2011

Вам, вероятно, повезет больше с Rails, если Gift выглядит следующим образом:

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

  name: str 
  ... 
}

А затем добавьте :foreign_key в Gift:

class Gift 
  include Mongoid::Document

  belongs_to :user, :foreign_key => 'author_id'
end
...