嘗試讓我的初始對象具有空數組表示嵌入的文件當前沒有嵌入文檔。爲新初始化的父對象獲取mongoid的bson文檔上的空數組
當嵌入文檔或刪除所有嵌入式文檔後,我可以在json字符串中獲得關係。但在嵌入任何文檔之前,我沒有在json字符串中獲得屬性character_classes。
您可以在IRB輸出的下方和下方看到我的模型,以顯示使用to_json和as_document時所得到的結果。第一組我沒有得到添加和刪除後,我做的character_classes ...
問題:我如何獲得初始設置傳遞character_classes作爲一個空的數組?
===========模型==========================
class Character
include Mongoid::Document
include Mongoid::Timestamps
embeds_many :character_classes
end
class CharacterClasses
include Mongoid::Document
include Mongoid::Timestamps
embeds_in :character_classes
field :title
field :character_level
end
= ========= IRB ==============================
> char = Character.first
=> #<Character _id: 550a1bd94e696383d1020000, created_at: 2015-03-19 00:44:09 UTC, updated_at: 2015-03-19 00:44:09 UTC>
> char.character_classes
=> []
> char.as_document
=> {"_id"=>BSON::ObjectId('550a1bd94e696383d1020000'), "updated_at"=>2015-03-19 00:44:09 UTC, "created_at"=>2015-03-19 00:44:09 UTC}
> char.to_json
=> "{\"_id\":{\"$oid\":\"550a1bd94e696383d1020000\"},\"created_at\":\"2015-03-19T00:44:09.232Z\",\"updated_at\":\"2015-03-19T00:56:01.257Z\"}"
> char.character_classes.create(title: "data")
=> [#<CharacterClass _id: 550a1d914e69638730000000, title: "data", character_level: 1>]
> char.as_document
=> {"_id"=>BSON::ObjectId('550a1bd94e696383d1020000'), "updated_at"=>2015-03-19 00:44:09 UTC, "created_at"=>2015-03-19 00:44:09 UTC, "character_classes"=>[{"_id"=>BSON::ObjectId('550a1d914e69638730000000'), "title"=>"data", "character_level"=>1}]}
> char.to_json
=>"{\"_id\":{\"$oid\":\"550a1bd94e696383d1020000\"},\"character_classes\":[{\"_id\":{\"$oid\":\"550a20a74e69638730010000\"},\"character_level\":1,\"title\":\"data\"}],\"created_at\":\"2015-03-19T00:44:09.232Z\",\"updated_at\":\"2015-03-19T00:56:01.257Z\"}"
> char.character_classes.destroy_all
=> 1
> char.character_classes
=> []
> char.as_document
=> {"_id"=>BSON::ObjectId('550a1bd94e696383d1020000'), "updated_at"=>2015-03-19 00:44:09 UTC, "created_at"=>2015-03-19 00:44:09 UTC, "character_classes"=>[]}
> char.to_json
=> "{\"_id\":{\"$oid\":\"550a1bd94e696383d1020000\"},\"character_classes\":[],\"created_at\":\"2015-03-19T00:44:09.232Z\",\"updated_at\":\"2015-03-19T00:56:01.257Z\"}"
編輯
我已經意識到,因爲有這個問題是有沒有關係to_json或as_document。它沒有被拉的原因是因爲只有具有值的屬性被放置在數據庫中。因此,在創建新對象時,由於嵌入式文檔尚不存在,因此不會將其放置在數據庫中。所以當我要求記錄時,它只是給出具有某種價值的屬性。
對於正常的屬性,我可以通過設置一個空白的默認值來解決這個問題。但是,嵌入許多內容時沒有默認選項。
有誰知道如何初始化關係,以便將一個空數組放入數據庫中?
這很重要,因爲在另一方面,我正在對此屬性運行map(javascript - react),並努力不要額外添加邏輯來檢查該屬性是否存在。 – nejohannsen 2015-03-19 18:07:52