Factor out valid_column_definition_options
Shopify is implementing a custom ActiveRecord adapter to integrate with [Vitess](https://vitess.io/), and we would like to overload the `valid_{column,table}_definition_options` methods and add additional valid options for schema migrations. For example: ```ruby module ActiveRecord module ConnectionAdapters class VitessMysql2Adapter < Mysql2Adapter ... def valid_table_definition_options super + [:skip_vschema_migrations, :sharding_keys, :auto_increment] end def valid_column_definition_options super + [:skip_vschema_migrations, :sharding_keys, :auto_increment] end end end end ``` This is the simplest possible change and factors out the various `valid_{table,column,primary_key}_definition_options` to be a public method on an adapter instance.
This commit is contained in:
parent
65ae7d1755
commit
cdb895774d
@ -586,7 +586,7 @@ def new_check_constraint_definition(expression, options) # :nodoc:
|
||||
|
||||
private
|
||||
def valid_column_definition_options
|
||||
ColumnDefinition::OPTION_NAMES
|
||||
@conn.valid_column_definition_options
|
||||
end
|
||||
|
||||
def create_column_definition(name, type, options)
|
||||
|
@ -1497,6 +1497,18 @@ def bulk_change_table(table_name, operations) # :nodoc:
|
||||
non_combinable_operations.each(&:call)
|
||||
end
|
||||
|
||||
def valid_table_definition_options
|
||||
[:temporary, :if_not_exists, :options, :as, :comment, :charset, :collation]
|
||||
end
|
||||
|
||||
def valid_column_definition_options
|
||||
ColumnDefinition::OPTION_NAMES
|
||||
end
|
||||
|
||||
def valid_primary_key_options
|
||||
[:limit, :default, :precision]
|
||||
end
|
||||
|
||||
private
|
||||
def validate_change_column_null_argument!(value)
|
||||
unless value == true || value == false
|
||||
@ -1595,14 +1607,6 @@ def create_alter_table(name)
|
||||
AlterTable.new create_table_definition(name)
|
||||
end
|
||||
|
||||
def valid_table_definition_options
|
||||
[:temporary, :if_not_exists, :options, :as, :comment, :charset, :collation]
|
||||
end
|
||||
|
||||
def valid_primary_key_options
|
||||
[:limit, :default, :precision]
|
||||
end
|
||||
|
||||
def validate_create_table_options!(options)
|
||||
unless options[:_skip_validate_options]
|
||||
options
|
||||
|
Loading…
Reference in New Issue
Block a user