aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb
diff options
context:
space:
mode:
authorSean Scally <sean.scally@gmail.com>2012-05-14 14:47:25 -0500
committerSean Scally <sean.scally@gmail.com>2012-05-14 14:47:25 -0500
commit3188f81199bdfa0d1660c4e2664d822544f9e04e (patch)
tree00d8ee067654af4c45e736330aa56ff95c3f9d25 /activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb
parentc5bcb0de6b5a805a3c9556684715b5cd463dc0c8 (diff)
downloadrails-3188f81199bdfa0d1660c4e2664d822544f9e04e.tar.gz
rails-3188f81199bdfa0d1660c4e2664d822544f9e04e.tar.bz2
rails-3188f81199bdfa0d1660c4e2664d822544f9e04e.zip
Set the primary key during #copy_table if necessary. Fixes [#2312]
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb')
-rw-r--r--activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb6
1 files changed, 5 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb b/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb
index 44e407a561..7b4be67131 100644
--- a/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb
+++ b/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb
@@ -522,7 +522,11 @@ module ActiveRecord
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))
+ 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
create_table(to, options) do |definition|
@definition = definition
columns(from).each do |column|