mirror of
https://github.com/github/rails.git
synced 2026-04-26 03:00:59 -04:00
Deprecate remove_column with array as an argument
This commit is contained in:
@@ -269,6 +269,12 @@ module ActiveRecord
|
||||
# remove_column(:suppliers, :qualification)
|
||||
# remove_columns(:suppliers, :qualification, :experience)
|
||||
def remove_column(table_name, *column_names)
|
||||
if column_names.first.kind_of?(Enumerable)
|
||||
message = 'Passing array to remove_columns is deprecated, please use ' +
|
||||
'multiple arguments, like: `remove_columns(:posts, :foo, :bar)`'
|
||||
ActiveSupport::Deprecation.warn message, caller
|
||||
end
|
||||
|
||||
columns_for_remove(table_name, *column_names).each {|column_name| execute "ALTER TABLE #{quote_table_name(table_name)} DROP #{column_name}" }
|
||||
end
|
||||
alias :remove_columns :remove_column
|
||||
|
||||
@@ -407,6 +407,13 @@ module ActiveRecord
|
||||
|
||||
def remove_column(table_name, *column_names) #:nodoc:
|
||||
raise ArgumentError.new("You must specify at least one column name. Example: remove_column(:people, :first_name)") if column_names.empty?
|
||||
|
||||
if column_names.first.kind_of?(Enumerable)
|
||||
message = 'Passing array to remove_columns is deprecated, please use ' +
|
||||
'multiple arguments, like: `remove_columns(:posts, :foo, :bar)`'
|
||||
ActiveSupport::Deprecation.warn message, caller
|
||||
end
|
||||
|
||||
column_names.flatten.each do |column_name|
|
||||
alter_table(table_name) do |definition|
|
||||
definition.columns.delete(definition[column_name])
|
||||
|
||||
@@ -873,6 +873,12 @@ if ActiveRecord::Base.connection.supports_migrations?
|
||||
assert_raise(ArgumentError) { Person.connection.remove_column("funny") }
|
||||
end
|
||||
|
||||
def test_remove_column_with_array_as_an_argument_is_deprecated
|
||||
assert_deprecated /Passing array to remove_columns is deprecated/ do
|
||||
Person.connection.remove_column("people", ["last_name", "description"])
|
||||
end
|
||||
end
|
||||
|
||||
def test_change_type_of_not_null_column
|
||||
assert_nothing_raised do
|
||||
Topic.connection.change_column "topics", "written_on", :datetime, :null => false
|
||||
|
||||
Reference in New Issue
Block a user