Skip to content

Commit

Permalink
Merge pull request #49911 from a5-stable/active_record_base_table_name
Browse files Browse the repository at this point in the history
return nil for `ActiveRecord::Base.table_name`

(cherry picked from commit 404ce7e)
  • Loading branch information
jonathanhefner committed Nov 4, 2023
1 parent 8bb3f0d commit 6c5890a
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 2 deletions.
5 changes: 5 additions & 0 deletions activerecord/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
* `ActiveRecord::Base.table_name` now returns `nil` instead of raising
"undefined method `abstract_class?` for Object:Class".

*a5-stable*

* Fix upserting for custom `:on_duplicate` and `:unique_by` consisting of all
inserts keys.

Expand Down
6 changes: 4 additions & 2 deletions activerecord/lib/active_record/model_schema.rb
Original file line number Diff line number Diff line change
Expand Up @@ -284,8 +284,10 @@ def quoted_table_name

# Computes the table name, (re)sets it internally, and returns it.
def reset_table_name # :nodoc:
self.table_name = if abstract_class?
superclass == Base ? nil : superclass.table_name
self.table_name = if self == Base
nil
elsif abstract_class?
superclass.table_name
elsif superclass.abstract_class?
superclass.table_name || compute_table_name
else
Expand Down
4 changes: 4 additions & 0 deletions activerecord/test/cases/base_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -524,6 +524,10 @@ def test_table_name_based_on_model_name
assert_equal "posts", PostRecord.table_name
end

def test_table_name_for_base_class
assert_nil ActiveRecord::Base.table_name
end

def test_null_fields
assert_nil Topic.find(1).parent_id
assert_nil Topic.create("title" => "Hey you").parent_id
Expand Down

0 comments on commit 6c5890a

Please sign in to comment.