2013-08-02 53 views
1

我有任務的集合,追溯至themselfsMongoid has_and_belongs_to_many inverse_of::零意外的數據

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關係,即Children任務沒有許多父任務。

回答

2

您在協會的孩子側看到nil_ids密鑰的原因是您已指定:nil Ruby符號而不是nil。因此,Mongoid只是將其解釋爲與其他任何符號一樣,並在Task上創建nils集合,作爲related_tasks集合的反轉。

嘗試:

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

這應該離開related_task_ids父任務,但無法存儲nil_ids的孩子。