sql >> データベース >  >> NoSQL >> MongoDB

Mongoidモデルの動的属性を一覧表示します

    モデルに次のようなものを含めるだけです:

    module DynamicAttributeSupport
    
      def self.included(base)
        base.send :include, InstanceMethods
      end
    
      module InstanceMethods
        def dynamic_attributes
          attributes.keys - _protected_attributes[:default].to_a - fields.keys
        end
    
        def static_attributes
          fields.keys - dynamic_attributes
        end
      end
    
    end
    

    それに伴う仕様は次のとおりです:

    require 'spec_helper'
    
    describe "dynamic attributes" do
    
      class DynamicAttributeModel
        include Mongoid::Document
        include DynamicAttributeSupport
        field :defined_field, type: String
      end
    
      it "provides dynamic_attribute helper" do
        d = DynamicAttributeModel.new(age: 45, defined_field: 'George')
        d.dynamic_attributes.should == ['age']
      end
    
      it "has static attributes" do
        d = DynamicAttributeModel.new(foo: 'bar')
        d.static_attributes.should include('defined_field')
        d.static_attributes.should_not include('foo')
      end
    
      it "allows creation with dynamic attributes" do
        d = DynamicAttributeModel.create(age: 99, blood_type: 'A')
        d = DynamicAttributeModel.find(d.id)
        d.age.should == 99
        d.blood_type.should == 'A'
        d.dynamic_attributes.should == ['age', 'blood_type']
      end
    end
    


    1. マングース:配列ではなく、単一のサブドキュメントを挿入する方法

    2. モンゴスロートポロジは、1つの接続後に破壊されました

    3. 特定の列を持つテーブルを格納する方法は、配列に格納し、Angularjs(平均スタック)で取得する必要があります

    4. Mongodb:graphlookup内の計算されたconnectToField