class QueryableCollection::Worker::Query
Public Class Methods
new(query, queryable_attributes)
click to toggle source
# File lib/queryable_collection/worker.rb, line 49 def initialize(query, queryable_attributes) @query = query @queryable_attributes = queryable_attributes validate! end
Public Instance Methods
perform(elements)
click to toggle source
# File lib/queryable_collection/worker.rb, line 55 def perform(elements) elements.select { |element| @query.all? { |attribute, value| element.send(attribute) == value } } end
Private Instance Methods
queryable?(attribute)
click to toggle source
# File lib/queryable_collection/worker.rb, line 65 def queryable?(attribute) @queryable_attributes.include?(attribute.to_s) end
validate!()
click to toggle source
# File lib/queryable_collection/worker.rb, line 69 def validate! non_queryable_attributes = @query.keys.reject { |attribute| queryable?(attribute) } return if non_queryable_attributes.empty? fail Error, "Attributes #{non_queryable_attributes.join(', ')} can't be used in query" end