Sha256: 04bbb827230ca988b52c31af895be71f6ee8b80c31f8627eabc7f11de6eb9ab8
Contents?: true
Size: 1.19 KB
Versions: 2
Compression:
Stored size: 1.19 KB
Contents
module Schemaless # # Stores indexes # class Index attr_accessor :fields, :name, :opts VALID_OPTS = [:unique, :orders] def initialize(fields, name = nil, opts = {}) @fields = [fields].flatten @fields = @fields.first if @fields.size == 1 @name = name || opts[:name] @opts = opts.select { |_k, v| v.present? } @opts.merge!(name: @name) if @name end def opts_text txt = opts.map { |k, v| "#{k}: #{v}" }.join(', ') txt.empty? ? '' : ", #{txt}" end def fields_text @fields.inspect end def to_s name end def ==(other) name == other.name end # # Add Indexes # def add!(table) return if Schemaless.sandbox ::ActiveRecord::Migration.add_index(table.name, fields, opts) end # # Delete Indexes # def remove!(table) return if Schemaless.sandbox key = name ? { name: name } : { column: fields } ::ActiveRecord::Migration.remove_index(table.name, key) end # # Change Indexes # def change!(table) return if Schemaless.sandbox ::ActiveRecord::Migration.change_index(table.name, name, type, opts) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
schemaless-0.0.5 | lib/schemaless/index.rb |
schemaless-0.0.3 | lib/schemaless/index.rb |