Permalink
Browse files

Fix default options argument on ActiveRecord::ConnectionAdaptors::Tab…

…le#column_exists?

Changed the default value for the `options` argument on `ActiveRecord::ConnectionAdapters::Table#column_exists?` from `nil` to an empty Hash `{}`.

That method calls through to `ActiveRecord::ConnectionAdapters::SchemaStatements#column_exists?` which expects `options` to be a Hash.

When `options` was `nil`, an error would occur in cases where the column did exist because the called method attempted to perform a key lookup on options.
  • Loading branch information...
1 parent f542188 commit 88aa2efd692619e87eee88dfc48d608bea9bcdb4 @grantneufeld grantneufeld committed Jun 20, 2011
@@ -328,7 +328,7 @@ def column(column_name, type, options = {})
end
# Checks to see if a column exists. See SchemaStatements#column_exists?
- def column_exists?(column_name, type = nil, options = nil)
+ def column_exists?(column_name, type = nil, options = {})
@base.column_exists?(@table_name, column_name, type, options)
end
@@ -1071,6 +1071,18 @@ def test_column_exists_with_definition
Person.connection.drop_table :testings rescue nil
end
+ def test_column_exists_on_table_with_no_options_parameter_supplied
+ Person.connection.create_table :testings do |t|
+ t.string :foo
+ end
+ Person.connection.change_table :testings do |t|
+ assert t.column_exists?(:foo)
+ assert !(t.column_exists?(:bar))
+ end
+ ensure
+ Person.connection.drop_table :testings rescue nil
+ end
+
def test_add_table
assert !Reminder.table_exists?

0 comments on commit 88aa2ef

Please sign in to comment.