1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Extract integer_like_primary_key_type to ease to handle it for adapters

This commit is contained in:
Ryuta Kamizono 2017-09-25 08:27:41 +09:00
parent 018b16f988
commit 8f037a5ab9
4 changed files with 18 additions and 17 deletions

View file

@ -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:

View file

@ -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

View file

@ -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

View file

@ -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