module Believer::ActAsEnumerable
Public Class Methods
included(base)
click to toggle source
# File lib/believer/act_as_enumerable.rb, line 4 def self.included(base) methods_not_delegated_to_array = [:first, :last, :any?, :exists?, :count] enumerable_delegate_methods = Enumerable.instance_methods(false).map { |enum_method| enum_method.to_sym } - methods_not_delegated_to_array base.delegate *enumerable_delegate_methods, :to => :to_a base.delegate :each, :size, :[], :to => :to_a end
Public Instance Methods
any?()
click to toggle source
# File lib/believer/act_as_enumerable.rb, line 48 def any? return loaded_objects.any? unless loaded_objects.nil? q = clone q.limit(1).count > 0 end
count()
click to toggle source
# File lib/believer/act_as_enumerable.rb, line 14 def count return loaded_objects.size unless loaded_objects.nil? count_q = clone count_q.selects = ['COUNT(*)'] result = count_q.execute cnt = -1 result.each do |row| cnt = row['count'] end cnt end
exists?(*args)
click to toggle source
Tests if there are any records present which conform to the argument filter(s) @param args [Object] a filter condition. This argument has the same usage as the where method
# File lib/believer/act_as_enumerable.rb, line 30 def exists?(*args) return count > 0 if args.nil? || args.size == 0 where(*args).exists? end
first()
click to toggle source
# File lib/believer/act_as_enumerable.rb, line 35 def first return loaded_objects.first unless loaded_objects.nil? clone.limit(1)[0] end
last()
click to toggle source
# File lib/believer/act_as_enumerable.rb, line 40 def last return loaded_objects.last unless loaded_objects.nil? raise "Cannot retrieve last if no order column is set" if @order_by.nil? lq = clone.limit(1) lq.order_by = @order_by.inverse lq[0] end