aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRyuta Kamizono <kamipo@gmail.com>2017-09-25 08:27:41 +0900
committerRyuta Kamizono <kamipo@gmail.com>2017-09-25 08:30:39 +0900
commit8f037a5ab929f929fe0897edc9ecadf901c32e56 (patch)
tree03c8e46e071cee75528bea727c5046e7581c7500
parent018b16f988dfd129f5dc7091eadda8eb05cdba76 (diff)
downloadrails-8f037a5ab929f929fe0897edc9ecadf901c32e56.tar.gz
rails-8f037a5ab929f929fe0897edc9ecadf901c32e56.tar.bz2
rails-8f037a5ab929f929fe0897edc9ecadf901c32e56.zip
Extract `integer_like_primary_key_type` to ease to handle it for adapters
-rw-r--r--activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb7
-rw-r--r--activerecord/lib/active_record/connection_adapters/mysql/schema_definitions.rb10
-rw-r--r--activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb9
-rw-r--r--activerecord/lib/active_record/connection_adapters/sqlite3/schema_definitions.rb9
4 files changed, 18 insertions, 17 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb b/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb
index 1041db0b8f..be2f625d74 100644
--- a/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb
@@ -396,6 +396,9 @@ module ActiveRecord
alias :belongs_to :references
def new_column_definition(name, type, **options) # :nodoc:
+ if integer_like_primary_key?(type, options)
+ type = integer_like_primary_key_type(type, options)
+ end
type = aliased_types(type.to_s, type)
options[:primary_key] ||= type == :primary_key
options[:null] = false if options[:primary_key]
@@ -414,6 +417,10 @@ module ActiveRecord
def integer_like_primary_key?(type, options)
options[:primary_key] && [:integer, :bigint].include?(type) && !options.key?(:default)
end
+
+ def integer_like_primary_key_type(type, options)
+ type
+ end
end
class AlterTable # :nodoc:
diff --git a/activerecord/lib/active_record/connection_adapters/mysql/schema_definitions.rb b/activerecord/lib/active_record/connection_adapters/mysql/schema_definitions.rb
index eff96af87a..da25e4863c 100644
--- a/activerecord/lib/active_record/connection_adapters/mysql/schema_definitions.rb
+++ b/activerecord/lib/active_record/connection_adapters/mysql/schema_definitions.rb
@@ -57,17 +57,12 @@ module ActiveRecord
include ColumnMethods
def new_column_definition(name, type, **options) # :nodoc:
- if integer_like_primary_key?(type, options)
- options[:auto_increment] = true
- end
-
case type
when :virtual
type = options[:type]
when :primary_key
type = :integer
options[:limit] ||= 8
- options[:auto_increment] = true
options[:primary_key] = true
when /\Aunsigned_(?<type>.+)\z/
type = $~[:type].to_sym
@@ -81,6 +76,11 @@ module ActiveRecord
def aliased_types(name, fallback)
fallback
end
+
+ def integer_like_primary_key_type(type, options)
+ options[:auto_increment] = true
+ type
+ end
end
class Table < ActiveRecord::ConnectionAdapters::Table
diff --git a/activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb b/activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb
index cb13f9fec1..75622eb304 100644
--- a/activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb
+++ b/activerecord/lib/active_record/connection_adapters/postgresql/schema_definitions.rb
@@ -179,17 +179,14 @@ module ActiveRecord
class TableDefinition < ActiveRecord::ConnectionAdapters::TableDefinition
include ColumnMethods
- def new_column_definition(name, type, **options) # :nodoc:
- if integer_like_primary_key?(type, options)
- type = if type == :bigint || options[:limit] == 8
+ private
+ def integer_like_primary_key_type(type, options)
+ if type == :bigint || options[:limit] == 8
:bigserial
else
:serial
end
end
-
- super
- end
end
class Table < ActiveRecord::ConnectionAdapters::Table
diff --git a/activerecord/lib/active_record/connection_adapters/sqlite3/schema_definitions.rb b/activerecord/lib/active_record/connection_adapters/sqlite3/schema_definitions.rb
index 2010de1ce2..c9855019c1 100644
--- a/activerecord/lib/active_record/connection_adapters/sqlite3/schema_definitions.rb
+++ b/activerecord/lib/active_record/connection_adapters/sqlite3/schema_definitions.rb
@@ -9,13 +9,10 @@ module ActiveRecord
end
alias :belongs_to :references
- def new_column_definition(name, type, **options) # :nodoc:
- if integer_like_primary_key?(type, options)
- type = :primary_key
+ private
+ def integer_like_primary_key_type(type, options)
+ :primary_key
end
-
- super
- end
end
end
end