diff --git a/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb b/activerecord/lib/active_record/connection_adapters/mysql_adapt index 3e0ce14..b07db57 100644 --- a/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb @@ -409,7 +409,8 @@ module ActiveRecord def build_length_hash(column_names, length_option = {}) length_option ||= {} if length_option.is_a? Hash - raise ArgumentError, ":length options must match colums" unless length_option.keys.all?{|x| column_names.include?(x)} + length_option.symbolize_keys! + raise ArgumentError, ":length options must match colums" unless length_option.keys.all?{|x| column_names.map(&:to_sym).include?(x)} length_hash = length_option else raise ArgumentError, ":length must be hash if multiple index columns are specified" if column_names.size > 1 @@ -423,7 +424,7 @@ module ActiveRecord end def add_index(table_name, column_name, options = {}) - column_names = Array(column_name) + column_names = Array(column_name).map(&:to_sym) index_name = index_name(table_name, :column => column_names) if Hash === options # legacy support, since this param was a string diff --git a/activerecord/test/cases/active_schema_test_mysql.rb b/activerecord/test/cases/active_schema_test_mysql.rb index ef68e80..d3e6f31 100644 --- a/activerecord/test/cases/active_schema_test_mysql.rb +++ b/activerecord/test/cases/active_schema_test_mysql.rb @@ -48,6 +48,11 @@ class ActiveSchemaTest < ActiveRecord::TestCase assert_equal "CREATE INDEX `index_people_on_col_name_and_other_col` ON `people` (`col_name`, `other_col`)", add_index(:people, [:col_name, end + def test_symbolize_column_names + assert_equal "CREATE INDEX `index_people_on_col_name_and_other_col` ON `people` (`col_name`(5), `other_col`)", add_index(:people, ['col_nam + assert_equal "CREATE INDEX `index_people_on_col_name_and_other_col` ON `people` (`col_name`(5), `other_col`)", add_index(:people, [:col_nam + end + def test_add_index_with_wrong_syntax assert_raise(ArgumentError) do add_index(:people, [:col_name, :other_col], :length => 1)