我正在尝试从相应的 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