Mongoid与"外键"

dis*_*dng 4 ruby-on-rails mongodb mongoid

作为mongodb的资深人士,我创建了以下结构:

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

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

  name: str 
  ... 
}
Run Code Online (Sandbox Code Playgroud)

我想在mongoid中正确映射这个:

class User 
  include Mongoid::Document

  has_many :gifts
end

class Gift 
  include Mongoid::Document

  belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)

但是,映射不正确.g = Gift.first; g.author未定义.我该如何进行参考?

从技术上讲,它是:

User <--- 1: N via author---> Gift <--- N:1 via receiver---> User
Run Code Online (Sandbox Code Playgroud)

(意思是用户可以是许多礼物的作者,并且用户可以是许多礼物的接收者,但是礼物可以只有1个作者和接收者).

Plz帮忙!!!

mu *_*ort 6

如果Gift看起来像这样,你可能会对Rails有更好的运气:

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

  name: str 
  ... 
}
Run Code Online (Sandbox Code Playgroud)

然后,添加一个:foreign_key礼物:

class Gift 
  include Mongoid::Document

  belongs_to :user, :foreign_key => 'author_id'
end
Run Code Online (Sandbox Code Playgroud)