diff options
author | Yves Senn <yves.senn@gmail.com> | 2012-10-28 18:51:26 +0100 |
---|---|---|
committer | Yves Senn <yves.senn@gmail.com> | 2012-10-28 20:26:52 +0100 |
commit | b104157314e95115b74e7ddd968f9c7734309a6e (patch) | |
tree | c4c40aab31ac90427379b1b1d8e8d41bb4819d0e /activerecord/lib | |
parent | c82f0d76e4cfc9a80fe9988f5d1ca6f6a5594eed (diff) | |
download | rails-b104157314e95115b74e7ddd968f9c7734309a6e.tar.gz rails-b104157314e95115b74e7ddd968f9c7734309a6e.tar.bz2 rails-b104157314e95115b74e7ddd968f9c7734309a6e.zip |
refactor `SQLite3Adapter#copy_table` to prevent primary key redefinitions. #6378
Diffstat (limited to 'activerecord/lib')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb b/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb index 4d5cb72c67..c5a859475f 100644 --- a/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb @@ -519,24 +519,22 @@ module ActiveRecord 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'}.present? && from_primary_key == 'id' - end + options[:id] = false create_table(to, options) do |definition| @definition = definition + @definition.primary_key(from_primary_key) if from_primary_key.present? columns(from).each do |column| column_name = options[:rename] ? (options[:rename][column.name] || options[:rename][column.name.to_sym] || column.name) : column.name + next if column_name == from_primary_key @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 |