MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Liệt kê các thuộc tính động trong Mô hình Mongoid

Chỉ cần đưa một cái gì đó như thế này vào mô hình của bạn:

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

và đây là một thông số kỹ thuật đi kèm với nó:

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tìm kiếm trong MongoDB diacriticInSensitive không hiển thị tất cả các hàng có dấu (từ có dấu phụ) như mong đợi và ngược lại

  2. MongoDB Aggregation sử dụng trình điều khiển C # chính thức?

  3. Mongoose thay đổi định dạng giản đồ

  4. TypeError:Không thể đọc thuộc tính 'chủ đề' là null

  5. Chỉ truy vấn tài liệu con và chỉ trả lại tài liệu con so khớp