diff options
author | Ryuta Kamizono <kamipo@gmail.com> | 2015-10-13 01:21:49 +0900 |
---|---|---|
committer | Ryuta Kamizono <kamipo@gmail.com> | 2015-10-13 01:32:05 +0900 |
commit | 1e797e5ba862b85169c78e0da544218e8eba3045 (patch) | |
tree | 158b659de3d295bd5550a1d98d10e3c67ccb021f /activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb | |
parent | 9f4cefd28ff2d126a5b314e80cf609709226d5ad (diff) | |
download | rails-1e797e5ba862b85169c78e0da544218e8eba3045.tar.gz rails-1e797e5ba862b85169c78e0da544218e8eba3045.tar.bz2 rails-1e797e5ba862b85169c78e0da544218e8eba3045.zip |
Move the methods for schema dumping into `{mysql,postgresql}/schema_dumper.rb`
Current master branch includes many schema dumping improvements.
It extract these features to the appropriate files.
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb | 45 |
1 files changed, 2 insertions, 43 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb b/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb index b260133f4a..f710ec10fc 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb @@ -1,12 +1,14 @@ require 'active_record/connection_adapters/abstract_adapter' require 'active_record/connection_adapters/mysql/schema_creation' require 'active_record/connection_adapters/mysql/schema_definitions' +require 'active_record/connection_adapters/mysql/schema_dumper' require 'active_support/core_ext/string/strip' module ActiveRecord module ConnectionAdapters class AbstractMysqlAdapter < AbstractAdapter + include MySQL::ColumnDumper include Savepoints def update_table_definition(table_name, base) # :nodoc: @@ -17,49 +19,6 @@ module ActiveRecord MySQL::SchemaCreation.new(self) end - def column_spec_for_primary_key(column) - spec = {} - if column.auto_increment? - spec[:id] = ':bigint' if column.bigint? - spec[:unsigned] = 'true' if column.unsigned? - return if spec.empty? - else - spec[:id] = column.type.inspect - spec.merge!(prepare_column_options(column).delete_if { |key, _| [:name, :type, :null].include?(key) }) - end - spec - end - - def prepare_column_options(column) - spec = super - spec[:unsigned] = 'true' if column.unsigned? - spec - end - - def migration_keys - super + [:unsigned] - end - - private - - def schema_limit(column) - super unless column.type == :boolean - end - - def schema_precision(column) - super unless /time/ === column.sql_type && column.precision == 0 - end - - def schema_collation(column) - if column.collation && table_name = column.instance_variable_get(:@table_name) - @collation_cache ||= {} - @collation_cache[table_name] ||= select_one("SHOW TABLE STATUS LIKE '#{table_name}'")["Collation"] - column.collation.inspect if column.collation != @collation_cache[table_name] - end - end - - public - class Column < ConnectionAdapters::Column # :nodoc: delegate :strict, :extra, to: :sql_type_metadata, allow_nil: true |