我有一系列与自己有关的任务
class Task
include Mongoid::Document
has_and_belongs_to_many :related_tasks , class_name: 'Task', inverse_of: :nil
我正在寻找的monogo数据 父任务
{
"_id" : ObjectId(""),
"related_task_ids" : [
ObjectId(""),
ObjectId("")
],
}
关于儿童任务(没有)
父任务看起来正确。 但是对于孩子的任务,我得到了
{
"_id" : ObjectId(""),
"nil_ids" : [
ObjectId("")
],
"related_task_ids" : [ ],
}
nil_ids
是父ID。
为什么要存储nil_id?有没有办法阻止这个?
我想要一个1..n的关系,即任务有很多孩子。
这不是一个n..n关系,即儿童任务没有很多父任务。
答案 0 :(得分:2)
您在关联的子级端看到nil_ids
键的原因是您指定了:nil
Ruby符号而不是nil
。所以Mongoid就像其他任何符号一样解释这个,并在nils
上创建一个Task
集合作为related_tasks
集合的反面。
尝试:
has_and_belongs_to_many :related_tasks , class_name: 'Task', inverse_of: nil
这应该将related_task_ids
保留在父任务中,但不会将nil_ids
存储在子项上。