1

我有一系列与自己相关的任务

class Task
  include Mongoid::Document
  has_and_belongs_to_many :related_tasks , class_name: 'Task', inverse_of: :nil

在 monogo 数据中,我正在寻找 Parent 任务

{
"_id" : ObjectId(""),
"related_task_ids" : [
    ObjectId(""),
    ObjectId("")
],
}

并在子任务上(无)

父任务看起来正确。但是在我得到的孩子任务上

{
"_id" : ObjectId(""),
"nil_ids" : [
    ObjectId("")
],
"related_task_ids" : [ ],
}

nil_ids父ID在哪里。

为什么它存储 nil_id 的?有没有办法阻止这种情况?

我想要一个 1..n 的关系,即一个任务有很多孩子。

这不是 n..n 关系,即子任务没有很多父任务。

4

1 回答 1

2

nil_ids您在关联的子端看到键的原因是您指定了:nilRuby 符号而不是nil. 所以 Mongoid 只是像任何其他符号一样解释它,并在nils集合上创建一个集合Task作为集合的反面related_tasks

尝试:

has_and_belongs_to_many :related_tasks , class_name: 'Task', inverse_of: nil

这应该将 留related_task_ids在父任务中,但不将 存储在子任务nil_ids中。

于 2013-08-03T09:57:50.420 回答