diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2011-11-04 03:29:59 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2011-11-04 03:29:59 -0700 |
commit | 0e407a90413d8a19002b85508d811ccdf2190783 (patch) | |
tree | 92c006a22d094276225bcfc497a9941eb56e85f8 /activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb | |
parent | 533a9f84b035756eedf9fdccf0c494dc9701ba72 (diff) | |
parent | 696c2ea68d7cdbf7eb15f7dce2d83498ef659eb7 (diff) | |
download | rails-0e407a90413d8a19002b85508d811ccdf2190783.tar.gz rails-0e407a90413d8a19002b85508d811ccdf2190783.tar.bz2 rails-0e407a90413d8a19002b85508d811ccdf2190783.zip |
Merge pull request #1163 from amatsuda/sexier_migration_31
Sexier migrations
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb b/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb index e0e957a12c..f74f3e6ec8 100644 --- a/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb @@ -457,28 +457,30 @@ module ActiveRecord drop_table(from) end - def copy_table(from, to, options = {}) #:nodoc: - options = options.merge(:id => (!columns(from).detect{|c| c.name == 'id'}.nil? && 'id' == primary_key(from).to_s)) + def copy_table(from, to, options = {}, &block) #:nodoc: + from_columns, from_primary_key = columns(from), primary_key(from) + options = options.merge(:id => (!from_columns.detect {|c| c.name == 'id'}.nil? && 'id' == primary_key(from).to_s)) + table_definition = nil create_table(to, options) do |definition| - @definition = definition - columns(from).each do |column| + table_definition = definition + from_columns.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, + table_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(primary_key(from)) if primary_key(from) - yield @definition if block_given? + table_definition.primary_key from_primary_key if from_primary_key + table_definition.instance_eval(&block) if block end copy_table_indexes(from, to, options[:rename] || {}) copy_table_contents(from, to, - @definition.columns.map {|column| column.name}, + table_definition.columns.map {|column| column.name}, options[:rename] || {}) end |