aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb
diff options
context:
space:
mode:
authorRyuta Kamizono <kamipo@gmail.com>2015-06-25 16:52:33 +0900
committerRyuta Kamizono <kamipo@gmail.com>2015-09-20 06:43:00 +0900
commitab12859947a1faeac3df93ebeb54efc572cf1803 (patch)
treed4484375825a2f7262e2b44ed99bb67988d73356 /activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb
parent2e7415bf71b017180d92ac6fdcafe215cc9eddb6 (diff)
downloadrails-ab12859947a1faeac3df93ebeb54efc572cf1803.tar.gz
rails-ab12859947a1faeac3df93ebeb54efc572cf1803.tar.bz2
rails-ab12859947a1faeac3df93ebeb54efc572cf1803.zip
Correctly dump composite primary key
Example: create_table :barcodes, primary_key: ["region", "code"] do |t| t.string :region t.integer :code end
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb')
-rw-r--r--activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb12
1 files changed, 11 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb b/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb
index 16aefc94ab..33a2afeba2 100644
--- a/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb
@@ -93,6 +93,12 @@ module ActiveRecord
(!options.key?(:null) || c.null == options[:null]) }
end
+ # Returns just a table's primary key
+ def primary_key(table_name)
+ pks = primary_keys(table_name)
+ pks.first if pks.one?
+ end
+
# Creates a new table with the name +table_name+. +table_name+ may either
# be a String or a Symbol.
#
@@ -220,7 +226,11 @@ module ActiveRecord
Base.get_primary_key table_name.to_s.singularize
end
- td.primary_key pk, options.fetch(:id, :primary_key), options
+ if pk.is_a?(Array)
+ td.primary_keys pk
+ else
+ td.primary_key pk, options.fetch(:id, :primary_key), options
+ end
end
yield td if block_given?