Module: ActiveRecord::ConnectionAdapters::ColumnDumper
- Included in:
- AbstractAdapter
- Defined in:
- lib/active_record/connection_adapters/abstract/schema_dumper.rb
Overview
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
Instance Method Summary collapse
- #column_spec(column) ⇒ Object
- #column_spec_for_primary_key(column) ⇒ Object
-
#migration_keys ⇒ Object
Lists the valid migration options.
-
#prepare_column_options(column) ⇒ Object
This can be overridden on an Adapter level basis to support other extended datatypes (Example: Adding an array option in the PostgreSQL::ColumnDumper).
Instance Method Details
#column_spec(column) ⇒ Object
9 10 11 12 13 14 |
# File 'lib/active_record/connection_adapters/abstract/schema_dumper.rb', line 9 def column_spec(column) spec = Hash[(column).map { |k, v| [k, "#{k}: #{v}"] }] spec[:name] = column.name.inspect spec[:type] = schema_type(column).to_s spec end |
#column_spec_for_primary_key(column) ⇒ Object
16 17 18 19 20 |
# File 'lib/active_record/connection_adapters/abstract/schema_dumper.rb', line 16 def column_spec_for_primary_key(column) return {} if default_primary_key?(column) spec = { id: schema_type(column).inspect } spec.merge!((column).except!(:null)) end |
#migration_keys ⇒ Object
Lists the valid migration options
55 56 57 |
# File 'lib/active_record/connection_adapters/abstract/schema_dumper.rb', line 55 def migration_keys [:name, :limit, :precision, :scale, :default, :null, :collation, :comment] end |
#prepare_column_options(column) ⇒ Object
This can be overridden on an Adapter level basis to support other extended datatypes (Example: Adding an array option in the PostgreSQL::ColumnDumper)
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/active_record/connection_adapters/abstract/schema_dumper.rb', line 25 def (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 |