Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

make ActiveRecord::Base.subclasses a public method

Signed-off-by: wycats <wycats@gmail.com>
  • Loading branch information...
commit f8eddcc7351c899088353aed21ee6e14ddb23ccf 1 parent 219c81b
Emmanuel Oga authored wycats committed
View
6 activerecord/lib/active_record/base.rb
@@ -1285,11 +1285,15 @@ def with_exclusive_scope(method_scoping = {}, &block)
with_scope(method_scoping, :overwrite, &block)
end
- def subclasses #:nodoc:
+ # ActiveRecord::Base utilizes the inherited hook to know about new subclasses.
+ # You can access the list of currently loaded ActiveRecord::Base subclasses using this accessor.
+ def subclasses
@@subclasses[self] ||= []
@@subclasses[self] + extra = @@subclasses[self].inject([]) {|list, subclass| list + subclass.subclasses }
end
+ public :subclasses
+
# Sets the default options for the model. The format of the
# <tt>options</tt> argument is the same as in find.
#
View
4 activerecord/test/cases/base_test.rb
@@ -2053,6 +2053,10 @@ def test_descends_from_active_record
assert !SubStiPost.descends_from_active_record?
end
+ def test_base_subclasses_is_public_method
+ assert ActiveRecord::Base.public_methods.include?("subclasses")
+ end
+
def test_find_on_abstract_base_class_doesnt_use_type_condition
old_class = LooseDescendant
Object.send :remove_const, :LooseDescendant
Please sign in to comment.
Something went wrong with that request. Please try again.