Sha256: ba5269adbd719ae98bd230ef1c72fa7b14f2dfbcbc02e00e75c702205396796b

Contents?: true

Size: 1.56 KB

Versions: 16

Compression:

Stored size: 1.56 KB

Contents

  def initialize(options = {})
    super(options)
  end

  # Returns the attribute requested on the datatype.
  def get(attribute)
    send(attribute) if has_attribute?(attribute)
  end

  def mongoize
    json_representation = {}
    attribute_names.each do |field|
      json_representation[field] = send(field).mongoize
    end
    json_representation
  end

  # Include '_type' in any JSON output. This is necessary for deserialization.
  def to_json(options = nil)
    serializable_hash(methods: :_type).to_json(options)
  end

  class << self
    # Get the object as it was stored in the database, and instantiate
    # this custom class from it.
    def demongoize(object)
      return nil unless object
      object = object.symbolize_keys
      if object.is_a?(Hash)
        # This will turn the object into the concrete type eg: facilityLocation
        data_element = QDM::Identifier.new
        data_element.attribute_names.each do |field|
          data_element.send(field + '=', object[field.to_sym])
        end
        data_element
      else object
      end
    end

    # Takes any possible object and converts it to how it would be
    # stored in the database.
    def mongoize(object)
      case object
      when nil then nil
      when QDM::Identifier then object.mongoize
      when Hash
        object = object.symbolize_keys
        data_element = QDM::Identifier.new
        data_element.attribute_names.each do |field|
          data_element.send(field + '=', object[field.to_sym])
        end
        data_element.mongoize
      else object
      end
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
cqm-models-4.2.0 templates/identifier_extension.rb.erb
cqm-models-3.1.2 templates/identifier_extension.rb.erb
cqm-models-4.1.1 templates/identifier_extension.rb.erb
cqm-models-4.1.0 templates/identifier_extension.rb.erb
cqm-models-4.0.2 templates/identifier_extension.rb.erb
cqm-models-4.0.1 templates/identifier_extension.rb.erb
cqm-models-4.0.0 templates/identifier_extension.rb.erb
cqm-models-3.1.1 templates/identifier_extension.rb.erb
cqm-models-3.1.0 templates/identifier_extension.rb.erb
cqm-models-3.0.6 templates/identifier_extension.rb.erb
cqm-models-3.0.5 templates/identifier_extension.rb.erb
cqm-models-3.0.4 templates/identifier_extension.rb.erb
cqm-models-3.0.3 templates/identifier_extension.rb.erb
cqm-models-3.0.2 templates/identifier_extension.rb.erb
cqm-models-3.0.1 templates/identifier_extension.rb.erb
cqm-models-3.0.0 templates/identifier_extension.rb.erb