対応する JSON 構造から Mongoid モデルを作成しようとしています。
ただし、組み込み関係フレームワークは含まれません。Mongoid 4.0 を使用しています。私は何か間違ったことをしていますか、それともこれはバグですか?
デフォルトのシリアル化とは異なる名前でstore_asを介して埋め込みリレーションを保存すると、期待どおりに機能します。また、モデルを初期化するのではなく、JSON からデータベースにモデルを作成すると、すべて問題ありません...
JSON 入力
{
"name": "MyName",
"frameworks": [
{
"name": "grails",
"runtime": "groovy",
"versions": []
}
]
}
モデル
require 'mongoid'
class Vendor
include Mongoid::Document
include Mongoid::Attributes::Dynamic
# fields
field :name, type: String
# relations
embeds_many :frameworks
# validations
validates :name, presence: true
validates :frameworks, presence: true
end
class Framework
include Mongoid::Document
embedded_in :vendor
field :name, type: String
field :runtime, type: String
field :versions, type: Array
# validations
validates :name, presence: true
validates :runtime, presence: true
end
テストアプリ
require 'json'
require 'require_relative'
require_relative 'vendor'
begin
json = JSON.parse(File.read('input.json'))
@profile = Vendor.new(json)
puts @profile.inspect
rescue JSON::ParserError => e
puts "Error: " << e.to_s
end