4

有沒有辦法讓嵌入式文檔在mongoid構造時自動初始化?我的意思是指嵌入了一個車庫文件的用戶。我必須寫下面的代碼完全建立與車庫的用戶:Mongoid:嵌入式文檔在父類構造時自動初始化

user = User.create!(name: "John") 
user.build_garage 
user.garage.cars << Car.create!(name: "Bessy") 

有沒有一種方法,我可以跳過調用user.build_garage

感謝

回答

6

可以回調添加到用戶模式是這樣的:

class User 
    ... 
    after_initialize do |u| 
    u.build_garage unless u.garage 
    end 
    ... 
end 

類的每個實例化後,這個回調火災,所以之後「發現」和「新」閃光。

+0

找到一個好主意後發射,因爲這並不意味着它會覆蓋以前的嵌入式文檔? – GTDev

+0

是否有任何mongoid汽車爲用戶做到這一點? – GTDev

+0

我編輯了答案來解決你的第一個問題。不,沒有這種自動性。我會說這樣的功能屬於實際的應用程序代碼。 – moritz

11

Mongoid 3有autobuild選項,它告訴Mongoid在關係被訪問時實例化一個新文檔,它是nil

embeds_one :label, autobuild: true 
has_one :producer, autobuild: true