модуль ActiveRecord::ConnectionAdapters::ColumnDumper
Цель данного модуля — перенести специфичные для адаптера определения столбцов в сам адаптер, вместо того, чтобы хранить их в дампере схемы. Этот код представляет собой стандартный случай. Затем мы можем переопределить обработку определенных типов данных в дампере схемы на уровне адаптера, переопределив этот код внутри адаптеров конкретных баз данных.
Публичные методы экземпляров
# File activerecord/lib/active_record/connection_adapters/abstract/schema_dumper.rb, line 9
def column_spec(column, types)
spec = prepare_column_options(column, types)
(spec.keys - [:name, :type]).each{ |k| spec[k].insert(0, "#{k}: ")}
spec
end # File activerecord/lib/active_record/connection_adapters/abstract/schema_dumper.rb, line 36 def migration_keys [:name, :limit, :precision, :scale, :default, :null] end
Перечисляет допустимые опции миграции
# File activerecord/lib/active_record/connection_adapters/abstract/schema_dumper.rb, line 18
def prepare_column_options(column, types)
spec = {}
spec[:name] = column.name.inspect
spec[:type] = column.type.to_s
spec[:null] = 'false' unless column.null
limit = column.limit || types[column.type][:limit]
spec[:limit] = limit.inspect if limit
spec[:precision] = column.precision.inspect if column.precision
spec[:scale] = column.scale.inspect if column.scale
default = schema_default(column) if column.has_default?
spec[:default] = default unless default.nil?
spec
end Это можно переопределить на уровне адаптера, чтобы поддержать другие расширенные типы данных (например, добавление опции массива в PostgreSQLAdapter)
© 2004–2018 David Heinemeier Hansson
Licensed under the MIT License.