Sha256: a799ef41b2e8b2257681fecdc661dbb72dc59b8c3202d726f1fb72ece1a15333

Contents?: true

Size: 1.48 KB

Versions: 1

Compression:

Stored size: 1.48 KB

Contents

require 'active_record'

module Bcdatabase
  module ActiveRecord
    module SchemaQualifiedTables
      def self.included(clz)
        clz.instance_eval do
          extend ClassMethods
          if self.respond_to?(:class_attribute)
            class_attribute :schema
          elsif self.respond_to?(:class_inheritable_accessor)
            class_inheritable_accessor :schema
          else
            fail "schema_qualified_tables is apparently not compatible with this version of ActiveRecord. Please report this as a bug."
          end
        end
      end

      module ClassMethods
        attr_accessor :schemas
        attr_writer :schema

        def table_name
          unless abstract_class?
            if schema_name
              "#{schema_name}.#{super}"
            else
              super
            end
          end
        end

        def sequence_name
          unless abstract_class?
            if schema_name && (super =~ /^#{schema_name}\./).nil?
              "#{schema_name}.#{super}"
            else
              super
            end
          end
        end

        # Support pre-rails 3.2 style setter
        def set_schema(schema)
          self.schema = schema
        end

        def schemas
          @schemas ||= { }
        end

        protected

        def schema_name
          ::ActiveRecord::Base.schemas[self.schema] || self.schema
        end
      end
    end
  end
end

::ActiveRecord::Base.send(:include, Bcdatabase::ActiveRecord::SchemaQualifiedTables)

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
schema_qualified_tables-1.1.0 lib/bcdatabase/active_record/schema_qualified_tables_override_getters.rb