Sha256: 33a484cfd88627b1d82aaa2ddad8da4b3551550f420025c493b340bf32f9602e
Contents?: true
Size: 1.22 KB
Versions: 1
Compression:
Stored size: 1.22 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 self.ancestors.select { |c| c.is_a?(Class) && c.superclass == ActiveRecord::Base }.reverse_each do |klass| @hierarchy_fields = @hierarchy_fields.merge(klass.fields) end end 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.8 | lib/active_record_schema/schema.rb |