2013-11-28 41 views
0

我有兩個型號:Mongoid:模型,belongs_to的一些模式不更新

class A 
include Mongoid::Document 

has_many :child, :class_name => "B", :inverse_of => :parent 

field :name 
end 

class B 
    include Mongoid::Document 

    belongs_to :parent, :class_name => "A", :inverse_of => :child 

    field :name 
end 

p = A.new 
p.name = "father" 
c = B.new 
c.name = "son" 
c.save 
p.child << c 
p.save 
c.save 

當我創建了一個孩子,並設置父,一切都剛剛好。如果我創建的孩子沒有指定父母並保存它,那也可以。但是我不能在保存孩子後取消parent_id。我已經在軌道控制檯測試過這些進程,並沒有錯誤。

欣賞接近解決方案的任何想法。

+0

按照慣例,Rails需要has_many的複數名稱,並且child是單數。儘管你可以用class_name和/或不規則變換覆蓋,但我建議重新處理你的問題以遵循Rails約定並避免混淆。 –

回答

1

嘗試使用gem mongoid-ancestry獲取db中的樹結構。
如果你使用它,變化將是最小的,但是當你使用它的創建實例是工作

+0

是不是用於有效記錄? – Kaveh

+0

哎呀!對不起,修正了mongoid-ancestry –

+0

謝謝你,雖然我還沒有嘗試過。但爲什麼它不能正常工作? – Kaveh

1

,但在數據庫無法保存。當你爲父母設置孩子時,mongoid通過validates_associated驗證關係,但它不在db中。 儘量使用創建代替

p.save 

之前設定的關係。