class Compendium::CollectionQuery
A CollectionQuery
is a Query
which runs once for each in a given set of criteria
Attributes
collection[RW]
Public Class Methods
new(*)
click to toggle source
Calls superclass method
# File lib/compendium/collection_query.rb, line 8 def initialize(*) super self.collection = prepare_collection(@options[:collection]) end
Public Instance Methods
run(params, context = self)
click to toggle source
# File lib/compendium/collection_query.rb, line 13 def run(params, context = self) collection_values = get_collection_values(context, params) results = collection_values.inject({}) do |r, (key, value)| res = collect_results(context, params, key, value) r[key] = res unless res.empty? r end # A CollectionQuery's results will be a ResultSet of ResultSets @results = ResultSet.new(results) end
Private Instance Methods
get_collection_values(context, params)
click to toggle source
# File lib/compendium/collection_query.rb, line 28 def get_collection_values(context, params) self.collection = get_associated_query(collection) if collection.is_a?(Symbol) if collection.is_a?(Query) collection.run(params, context) unless collection.ran? collection.results elsif collection.is_a?(Proc) prepare_collection(collection.call(params)) else collection end end
prepare_collection(collection)
click to toggle source
# File lib/compendium/collection_query.rb, line 41 def prepare_collection(collection) return collection if collection.is_a?(Query) || collection.is_a?(Symbol) || collection.is_a?(Proc) collection.is_a?(Hash) ? collection : Hash[collection.zip(collection)] end