Descendants vs Subclasses in Ruby
By Abhishek Kanojia on January 21, 2022
Descendants has been a part of Rails ActiveSupport::DescendantsTracker for quite a while. However, Class#subsclasses is recently introduced in Ruby 3.1
descendants is available in Rails.
subsclasses is native ruby method and is available in ruby 3.1
# available in rails
Parent.descendants
=> [ChildA, GrandChildA, ChildB]
# available in ruby
Parent.subclasses
=> [ChildA, ChildB]
Notice: descendants return all the child classes and subclasses only returns child classes directly associated to parent class.