Sha256: d8147a82d471a5ebabb398d69ca76da483fd8e0499952ff8a9d178c67090b2bb
Contents?: true
Size: 932 Bytes
Versions: 24
Compression:
Stored size: 932 Bytes
Contents
module Riveter module Query extend ActiveSupport::Concern attr_reader :query_filter attr_reader :options attr_reader :relation def initialize(query_filter, options={}) @query_filter = query_filter @options = options @relation = build_relation(@query_filter) end # enumerates the resultset in batch mode def find_each(&block) relation.find_each_with_order(&block) if has_data? end # override if necessary in derived classes def has_data? @has_data ||= relation.count() > 0 end protected # override in derived classes def build_relation(filter) # # use the given filter to add conditions # to produce an ActiveRelation as the query # # E.g. filter.page #=> Model.all.page(filter.page) # raise NotImplementedError end # helper class class Base include Query end end end
Version data entries
24 entries across 24 versions & 1 rubygems