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:
parent
018b16f988
commit
8f037a5ab9
4 changed files with 18 additions and 17 deletions
|
@ -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:
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -9,12 +9,9 @@ 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
|
||||
end
|
||||
|
||||
super
|
||||
private
|
||||
def integer_like_primary_key_type(type, options)
|
||||
:primary_key
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue