Sha256: 6e39e8e082d555d3e2ca56228310004b5a0a3dbfca402dedcba1cc9f0bf2ef70

Contents?: true

Size: 1.2 KB

Versions: 10

Compression:

Stored size: 1.2 KB

Contents

# encoding: UTF-8

module Spontaneous::Model::Core
  module SchemaId
    extend Spontaneous::Concern

    module ClassMethods
      def schema_id
        mapper.schema.to_id(self)
      end

      def schema_name
        "type//#{self.name}"
      end

      def schema_owner
        nil
      end

      def owner_sid
        nil
      end
    end # ClassMethods

    # InstanceMethods

    SCHEMA_ID_COLUMNS = [:type, :style, :box]
    SCHEMA_ID_COLUMNS.each do |c|
      column = "#{c}_sid"
      self.class_eval(<<-RUBY, __FILE__, __LINE__)
          def #{column}
            @_#{column}_sid ||= Spontaneous.schema.uids[super]
          end

          def #{column}=(sid)
            @_#{column}_sid = Spontaneous.schema.uids[sid]
            super(@_#{column}_sid.to_s)
          end
      RUBY
    end

    def refresh
      SCHEMA_ID_COLUMNS.map { |s| "@_#{s}_sid" }.each do |s|
        remove_instance_variable(s) if instance_variable_defined?(s)
      end
      super
    end

    def schema_id
      self.class.schema_id
    end

    def schema_name
      self.class.schema_name
    end

    def schema_owner
      self.class.schema_owner
    end

    def owner_sid
      self.class.owner_sid
    end
  end # SchemaId
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
spontaneous-0.2.0.beta10 lib/spontaneous/model/core/schema_id.rb
spontaneous-0.2.0.beta9 lib/spontaneous/model/core/schema_id.rb
spontaneous-0.2.0.beta8 lib/spontaneous/model/core/schema_id.rb
spontaneous-0.2.0.beta7 lib/spontaneous/model/core/schema_id.rb
spontaneous-0.2.0.beta6 lib/spontaneous/model/core/schema_id.rb
spontaneous-0.2.0.beta5 lib/spontaneous/model/core/schema_id.rb
spontaneous-0.2.0.beta4 lib/spontaneous/model/core/schema_id.rb
spontaneous-0.2.0.beta3 lib/spontaneous/model/core/schema_id.rb
spontaneous-0.2.0.beta2 lib/spontaneous/model/core/schema_id.rb
spontaneous-0.2.0.beta1 lib/spontaneous/model/core/schema_id.rb