class Wallaby::ActiveRecord::ModelFinder

Finder to return all the appropriate ActiveRecord models.

Public Instance Methods

all() click to toggle source

Return a list of ActiveRecord::Base subclasses that aren't one of the following types:

  1. abstract class

  2. anonymous class

  3. the HABTM relation class

@return [Array<Class>]

# File lib/adapters/wallaby/active_record/model_finder.rb, line 13
def all
  ::ActiveRecord::Base.descendants.reject do |model_class|
    defined?(::ApplicationRecord) && model_class == ::ApplicationRecord ||
      model_class.abstract_class? ||
      anonymous?(model_class) ||
      model_class.name.index('HABTM') ||
      invalid_class_name?(model_class)
  end.sort_by(&:to_s)
end

Protected Instance Methods

anonymous?(model_class) click to toggle source

@param model_class [Class] @see Wallaby::ModuleUtils.anonymous_class?

# File lib/adapters/wallaby/active_record/model_finder.rb, line 27
def anonymous?(model_class)
  ModuleUtils.anonymous_class?(model_class).tap do |result|
    Logger.warn "Anonymous class is detected for table #{model_class.try :table_name}" if result
  end
end
invalid_class_name?(model_class) click to toggle source

To exclude classes that have invalid class name, e.g. primary::SchemaMigration from Rails test @param model_class [Class]

# File lib/adapters/wallaby/active_record/model_finder.rb, line 35
def invalid_class_name?(model_class)
  model_class.name.constantize
  false
rescue NameError
  true
end