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