有沒有辦法讓嵌入式文檔在mongoid構造時自動初始化?我的意思是指嵌入了一個車庫文件的用戶。我必須寫下面的代碼完全建立與車庫的用戶:Mongoid:嵌入式文檔在父類構造時自動初始化
user = User.create!(name: "John")
user.build_garage
user.garage.cars << Car.create!(name: "Bessy")
有沒有一種方法,我可以跳過調用user.build_garage
?
感謝
有沒有辦法讓嵌入式文檔在mongoid構造時自動初始化?我的意思是指嵌入了一個車庫文件的用戶。我必須寫下面的代碼完全建立與車庫的用戶:Mongoid:嵌入式文檔在父類構造時自動初始化
user = User.create!(name: "John")
user.build_garage
user.garage.cars << Car.create!(name: "Bessy")
有沒有一種方法,我可以跳過調用user.build_garage
?
感謝
可以回調添加到用戶模式是這樣的:
class User
...
after_initialize do |u|
u.build_garage unless u.garage
end
...
end
類的每個實例化後,這個回調火災,所以之後「發現」和「新」閃光。
Mongoid 3有autobuild
選項,它告訴Mongoid在關係被訪問時實例化一個新文檔,它是nil
。
embeds_one :label, autobuild: true
has_one :producer, autobuild: true
找到一個好主意後發射,因爲這並不意味着它會覆蓋以前的嵌入式文檔? – GTDev
是否有任何mongoid汽車爲用戶做到這一點? – GTDev
我編輯了答案來解決你的第一個問題。不,沒有這種自動性。我會說這樣的功能屬於實際的應用程序代碼。 – moritz