Skip to content

Commit 5e0165a

Browse files
Merge pull request #49911 from a5-stable/active_record_base_table_name
return nil for `ActiveRecord::Base.table_name` (cherry picked from commit 404ce7e)
1 parent d0ee876 commit 5e0165a

File tree

3 files changed

+13
-2
lines changed

3 files changed

+13
-2
lines changed

activerecord/CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
* `ActiveRecord::Base.table_name` now returns `nil` instead of raising
2+
"undefined method `abstract_class?` for Object:Class".
3+
4+
*a5-stable*
5+
16
* Fix upserting for custom `:on_duplicate` and `:unique_by` consisting of all
27
inserts keys.
38

activerecord/lib/active_record/model_schema.rb

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -276,8 +276,10 @@ def quoted_table_name
276276

277277
# Computes the table name, (re)sets it internally, and returns it.
278278
def reset_table_name # :nodoc:
279-
self.table_name = if abstract_class?
280-
superclass == Base ? nil : superclass.table_name
279+
self.table_name = if self == Base
280+
nil
281+
elsif abstract_class?
282+
superclass.table_name
281283
elsif superclass.abstract_class?
282284
superclass.table_name || compute_table_name
283285
else

activerecord/test/cases/base_test.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -497,6 +497,10 @@ def test_table_name_based_on_model_name
497497
assert_equal "posts", PostRecord.table_name
498498
end
499499

500+
def test_table_name_for_base_class
501+
assert_nil ActiveRecord::Base.table_name
502+
end
503+
500504
def test_null_fields
501505
assert_nil Topic.find(1).parent_id
502506
assert_nil Topic.create("title" => "Hey you").parent_id

0 commit comments

Comments
 (0)