Sha256: ee0c97449e1d6f2bb6c1c9de8cfa4bd65f606ce0e78ddb4ec742657e2d8bd600
Contents?: true
Size: 1.28 KB
Versions: 1
Compression:
Stored size: 1.28 KB
Contents
require 'active_record_schema/field' require 'active_record_schema/index' require 'active_record_schema/join' require 'active_record_schema/schema_diff' module ActiveRecordSchema class Schema include ActiveRecordSchema::SchemaDiff attr_reader :model, :fields, :indexes, :joins def initialize(model) @model = model @fields = ActiveSupport::OrderedHash.new @indexes = {} @joins = {} end def hierarchy_fields if @hierarchy_fields @hierarchy_fields else @hierarchy_fields ||= ActiveSupport::OrderedHash.new model.ancestors.select { |c| c < ActiveRecord::Base }.reverse_each do |klass| @hierarchy_fields = @hierarchy_fields.merge(klass.fields) end end end def hierarchy_fields_names hierarchy_fields.values.map(&:name).map(&:to_s) end def field_names fields.values.map(&:name).map(&:to_s) end def add_field(column, type, options) @fields[:"#{column}"] = Field.new(column, type, options) end def add_index(column, options = {}) @indexes[:"#{column}"] = Index.new(column, options) end def add_join(table, key1, key2, index = true) @joins[:"#{table}"] = Join.new(table, key1, key2) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
active_record_schema-0.5.9 | lib/active_record_schema/schema.rb |