diff --git a/activerecord/lib/active_record/model_schema.rb b/activerecord/lib/active_record/model_schema.rb
index <HASH>..<HASH> 100644
--- a/activerecord/lib/active_record/model_schema.rb
+++ b/activerecord/lib/active_record/model_schema.rb
@@ -115,7 +115,7 @@ module ActiveRecord
       # the documentation for ActiveRecord::Base#table_name.
       def table_name=(value)
         @original_table_name = @table_name if defined?(@table_name)
-        @table_name          = value
+        @table_name          = value && value.to_s
         @quoted_table_name   = nil
         @arel_table          = nil
         @relation            = Relation.new(self, arel_table)
diff --git a/activerecord/test/cases/base_test.rb b/activerecord/test/cases/base_test.rb
index <HASH>..<HASH> 100644
--- a/activerecord/test/cases/base_test.rb
+++ b/activerecord/test/cases/base_test.rb
@@ -1446,6 +1446,11 @@ class BasicsTest < ActiveRecord::TestCase
     end
   end
 
+  def test_set_table_name_symbol_converted_to_string
+    Joke.table_name = :cold_jokes
+    assert_equal 'cold_jokes', Joke.table_name
+  end
+
   def test_quoted_table_name_after_set_table_name
     klass = Class.new(ActiveRecord::Base)
call to_s on value passed to table_name=