On this page
module ActiveRecord::ConnectionAdapters::ColumnDumper
The goal of this module is to move Adapter specific column definitions to the Adapter instead of having it in the schema dumper itself. This code represents the normal case. We can then redefine how certain data types may be handled in the schema dumper on the Adapter level by over-writing this code inside the database specific adapters
Public Instance Methods
# File activerecord/lib/active_record/connection_adapters/abstract/schema_dumper.rb, line 9
def column_spec(column)
[schema_type_with_virtual(column), prepare_column_options(column)]
end
# File activerecord/lib/active_record/connection_adapters/abstract/schema_dumper.rb, line 13
def column_spec_for_primary_key(column)
return {} if default_primary_key?(column)
spec = { id: schema_type(column).inspect }
spec.merge!(prepare_column_options(column).except!(:null))
spec[:default] ||= "nil" if explicit_primary_key_default?(column)
spec
end
# File activerecord/lib/active_record/connection_adapters/abstract/schema_dumper.rb, line 24
def prepare_column_options(column)
spec = {}
if limit = schema_limit(column)
spec[:limit] = limit
end
if precision = schema_precision(column)
spec[:precision] = precision
end
if scale = schema_scale(column)
spec[:scale] = scale
end
default = schema_default(column) if column.has_default?
spec[:default] = default unless default.nil?
spec[:null] = "false" unless column.null
if collation = schema_collation(column)
spec[:collation] = collation
end
spec[:comment] = column.comment.inspect if column.comment.present?
spec
end
This can be overridden on an Adapter level basis to support other extended datatypes (Example: Adding an array option in the PostgreSQL::ColumnDumper)
© 2004–2018 David Heinemeier Hansson
Licensed under the MIT License.