1

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

0 回答 0