method
copy_table
v3.2.13 -
Show latest stable
- Class:
ActiveRecord::ConnectionAdapters::SQLiteAdapter
copy_table(from, to, options = {})protected
No documentation available.
# File activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb, line 492
def copy_table(from, to, options = {}) #:nodoc:
from_primary_key = primary_key(from)
options[:primary_key] = from_primary_key if from_primary_key != 'id'
unless options[:primary_key]
options[:id] = !columns(from).detect{|c| c.name == 'id'}.nil? && 'id' == from_primary_key
end
create_table(to, options) do |definition|
@definition = definition
columns(from).each do |column|
column_name = options[:rename] ?
(options[:rename][column.name] ||
options[:rename][column.name.to_sym] ||
column.name) : column.name
@definition.column(column_name, column.type,
:limit => column.limit, :default => column.default,
:precision => column.precision, :scale => column.scale,
:null => column.null)
end
@definition.primary_key(from_primary_key) if from_primary_key
yield @definition if block_given?
end
copy_table_indexes(from, to, options[:rename] || {})
copy_table_contents(from, to,
@definition.columns.map {|column| column.name},
options[:rename] || {})
end