jgeiger/validb

View on GitHub
lib/validb/finder.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Validb
  class Finder

    def initialize(params, model_name_string)
      @model_filterer = Validb::ModelFilterer.new(params)
      @model_name_string = model_name_string || ""
    end

    def models
      @model_filterer.filter(selected_models).map(&:name)
    end

    private

    def selected_models
      model_names.empty? ? all : all.select { |model| model_names.include?(model.name) }
    end

    def model_names
      @model_names ||= @model_name_string.split(",").map(&:strip)
    end

    def all
      @models ||= ActiveRecord::Base.descendants.select { |model| model.table_exists? }
    end
  end
end