Method: Pokan::Query#where
- Defined in:
- lib/pokan/query.rb
#where(query) ⇒ Object
Returns a array of entities respecting the given restrictions Structure: ‘234’, role: ‘dead’, status:[‘alive’, ‘dead’], random: true…
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/pokan/query.rb', line 17 def where(query) result = [] candidates = @db.smembers('entities') if query.has_key?(:id) query[:id] = [query[:id]] unless query[:id].is_a?(Array) candidates = candidates & query[:id] end candidates = candidates - query[:not] if query.has_key?(:not) candidates.each do |entity_id| entity = @entity_class.new entity.id = entity_id entity.reload result << entity if entity.match?(query.reject {|k, v| k == :not || k == :random || k == :id}) end result = [result.sample] if query[:random] result end |