diff options
author | Ranjay Krishna <rak248@cornell.edu> | 2013-03-07 17:57:15 -0500 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2013-03-25 09:35:22 -0700 |
commit | c2e203173221991e104a9eb872025788b9fc4763 (patch) | |
tree | 2a050ef94f7142c68be06effba5130dc67d91cbe /activerecord/lib | |
parent | 7219c5f31966a1ec1af075bbd4bdeba4e471533c (diff) | |
download | rails-c2e203173221991e104a9eb872025788b9fc4763.tar.gz rails-c2e203173221991e104a9eb872025788b9fc4763.tar.bz2 rails-c2e203173221991e104a9eb872025788b9fc4763.zip |
Created a layer of abstraction for the valid type checking in schema dumper. Now, connection handles the check for valid types so that each database can handle the changes individually.
Diffstat (limited to 'activerecord/lib')
4 files changed, 13 insertions, 1 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 1f111a0976..71f5c8fd29 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb @@ -599,6 +599,10 @@ module ActiveRecord self.class.type_cast_config_to_boolean(@config.fetch(:strict, true)) end + def valid_type?(type) + !native_database_types[type].nil? + end + protected # MySQL is too stupid to create a temporary table for use subquery, so we have diff --git a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb index 6f1eb25990..fd7d58616a 100644 --- a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb @@ -663,6 +663,10 @@ module ActiveRecord @use_insert_returning end + def valid_type?(type) + !native_database_types[type].nil? + end + protected # Returns the version of the connected PostgreSQL server. diff --git a/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb b/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb index 50d189d27a..c3bebf7a5e 100644 --- a/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb @@ -499,6 +499,10 @@ module ActiveRecord rename_column_indexes(table_name, column_name, new_column_name) end + def valid_type?(type) + true + end + protected def select(sql, name = nil, binds = []) #:nodoc: exec_query(sql, name, binds) diff --git a/activerecord/lib/active_record/schema_dumper.rb b/activerecord/lib/active_record/schema_dumper.rb index df090b972d..fa9de926c5 100644 --- a/activerecord/lib/active_record/schema_dumper.rb +++ b/activerecord/lib/active_record/schema_dumper.rb @@ -118,7 +118,7 @@ HEADER # then dump all non-primary key columns column_specs = columns.map do |column| - raise StandardError, "Unknown type '#{column.sql_type}' for column '#{column.name}'" if @types[column.type].nil? + raise StandardError, "Unknown type '#{column.sql_type}' for column '#{column.name}'" unless @connection.valid_type?(column.type) next if column.name == pk @connection.column_spec(column, @types) end.compact |