在 mongoid 关联中是什么inverse_of
意思?通过使用它而不是没有它的关联,我能得到什么?
问问题
7357 次
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 回答