26

在 mongoid 关联中是什么inverse_of意思?通过使用它而不是没有它的关联,我能得到什么?

4

1 回答 1

42

在一个简单的关系中,两个模型只能以一种方式关联,并且关系的名称自动是它所关联的模型的名称。在大多数情况下这很好,但还不够。

inverse_of允许您指定您所指的关系。这在您想为您的关系使用自定义名称的情况下很有帮助。例如:

class User
  include Mongoid::Document
  has_many :requests, class_name: "Request", inverse_of: :requester
  has_many :assignments, class_name: "Request", inverse_of: :worker
end

class Request
  include Mongoid::Document
  belongs_to :requester, class_name: "User", inverse_of: :requests
  belongs_to :worker, class_name: "User", inverse_of: :assignments
end

在此示例中,用户既可以请求票证,也可以分配给票证。为了表示这两个不同的关系,我们需要将两个关系定义为同一个模型但具有不同的名称。Usinginverse_of让 Mongoid 知道“requests”与“requester”一起使用,“assignments”与“worker”一起使用。这里的优势是双重的,我们可以为我们的关系使用有意义的名称,并且我们可以让两个模型以多种方式关联。查看Mongoid 关系文档以获取更多详细信息。

于 2013-05-30T22:26:58.243 回答