1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Deprecate table names containing dots

Dots have special meaning in most backends (e.g. everything except
SQLite3), as well as most methods that work with table or column names.
This isn't something that we ever explicitly supported, but there's at
least one case of somebody using this (see #24367), so we'll go through a deprecation
cycle as normal.
This commit is contained in:
Sean Griffin 2016-03-31 13:15:17 -06:00
parent 04ac5655be
commit 7b82e1c77b
2 changed files with 15 additions and 0 deletions

View file

@ -144,6 +144,13 @@ module ActiveRecord
def table_name=(value)
value = value && value.to_s
if value && value.include?(".")
# When this deprecation warning is removed, revert commit 04ac5655be91f49cd4dfe2838df96213502fb274
ActiveSupport::Deprecation.warn(
'Support for table names containing "." is deprecated and will be removed in Rails 5.1.'
)
end
if defined?(@table_name)
return if value == @table_name
reset_column_information if connected?

View file

@ -1531,4 +1531,12 @@ class BasicsTest < ActiveRecord::TestCase
assert Developer.new.respond_to?(:last_name=)
assert Developer.new.respond_to?(:last_name?)
end
test "table names containing a dot are deprecated" do
assert_deprecated do
Class.new(ActiveRecord::Base) do
self.table_name = "foo.bar"
end
end
end
end