diff options
author | Ryuta Kamizono <kamipo@gmail.com> | 2015-06-25 16:52:33 +0900 |
---|---|---|
committer | Ryuta Kamizono <kamipo@gmail.com> | 2015-09-20 06:43:00 +0900 |
commit | ab12859947a1faeac3df93ebeb54efc572cf1803 (patch) | |
tree | d4484375825a2f7262e2b44ed99bb67988d73356 /activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb | |
parent | 2e7415bf71b017180d92ac6fdcafe215cc9eddb6 (diff) | |
download | rails-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.rb | 12 |
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? |