module Skr::DB::MigrationMethods
Public Instance Methods
create_skr_table(table_name, *args, &block)
click to toggle source
# File lib/skr/db/migration_helpers.rb, line 66 def create_skr_table(table_name, *args, &block) definition = nil create_table( Skr.config.table_prefix + table_name, *args ) do | td | # Thanks for the trick from the Foreigner gem! # in connection_adapters/abstract/schema_statements definition = td block.call(td) unless block.nil? end definition.skr_foreign_keys.each do |to_table, options | skr_add_foreign_key( table_name, to_table, options ) end definition.skr_extra_indexes.each do | index_column, options | skr_add_index(table_name, index_column, options ) end end
drop_skr_table( table_name, *args )
click to toggle source
# File lib/skr/db/migration_helpers.rb, line 117 def drop_skr_table( table_name, *args ) drop_table( Skr.config.table_prefix + table_name ) end
remove_skr_index( table_name, column )
click to toggle source
# File lib/skr/db/migration_helpers.rb, line 121 def remove_skr_index( table_name, column ) remove_index( Skr.config.table_prefix + table_name, column ) end
skr_add_foreign_key( table_name, to_table, options = {} )
click to toggle source
# File lib/skr/db/migration_helpers.rb, line 93 def skr_add_foreign_key( table_name, to_table, options = {} ) from_table = Skr.config.table_prefix + table_name.to_s to_table = Skr.config.table_prefix + to_table.to_s column = options[:column] || "#{to_table.to_s.singularize}_id" foreign_key_name = options.key?(:name) ? options[:name].to_s : "#{from_table}_#{column}_fk" primary_key = options[:primary_key] || "id" dependency = case options[:dependent] when :nullify then "ON DELETE SET NULL" when :delete then "ON DELETE CASCADE" when :restrict then "ON DELETE RESTRICT" else "" end sql = "ALTER TABLE #{quote_table_name(from_table)} " + "ADD CONSTRAINT #{quote_column_name(foreign_key_name)} " + "FOREIGN KEY (#{quote_column_name(column)}) " + "REFERENCES #{quote_table_name( to_table )}(#{primary_key})" sql << " #{dependency}" if dependency.present? sql << " #{options[:options]}" if options[:options] execute(sql) end
skr_add_index( table_name, columns, options={} )
click to toggle source
# File lib/skr/db/migration_helpers.rb, line 82 def skr_add_index( table_name, columns, options={} ) table_name = Skr.config.table_prefix + table_name.to_s if options[:function] unique = options[:unique] ? 'unique' : '' name = table_name + 'indx_' + columns execute( "create #{unique} index #{name} on #{table_name}(#{options[:function]})" ) else add_index( table_name, columns, options ) end end