Class: ActiveRecord::Relation

Inherits:
Object
  • Object
show all
Defined in:
lib/directive_record/gem_ext/active_record/relation.rb,
lib/directive_record/gem_ext/active_record/relation/count.rb

Instance Method Summary collapse

Instance Method Details

#count(column_name = nil, options = {}) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/directive_record/gem_ext/active_record/relation/count.rb', line 6

def count(column_name = nil, options = {})
  if !loaded? && (column_name == :all) && (options == {})
    associations = klass.reflections.keys.collect(&:to_s)

    contains_possible_paths = qry_options.any? do |key, value|
      if value.is_a?(Array)
        value.any? do |val|
          val.to_s.scan(/(?:^|[^\.])([a-z_]+)\.[a-z_]+/).flatten.any? do |string|
            associations.include?(string)
          end
        end
      end
    end

    if contains_possible_paths
      return qry("COUNT(DISTINCT id)")[0][0]
    end
  end
  original_count column_name, options
end

#original_countObject



4
# File 'lib/directive_record/gem_ext/active_record/relation/count.rb', line 4

alias :original_count :count

#qry(*args) ⇒ Object



12
13
14
# File 'lib/directive_record/gem_ext/active_record/relation.rb', line 12

def qry(*args)
  klass.qry qry_options(*args)
end

#qry_options(*args) ⇒ Object



4
5
6
# File 'lib/directive_record/gem_ext/active_record/relation.rb', line 4

def qry_options(*args)
  DirectiveRecord::Relation.new(self).qry_options(*args)
end

#qry_value(*args) ⇒ Object



16
17
18
# File 'lib/directive_record/gem_ext/active_record/relation.rb', line 16

def qry_value(*args)
  klass.qry_value qry_options(*args)
end

#qry_values(*args) ⇒ Object



20
21
22
# File 'lib/directive_record/gem_ext/active_record/relation.rb', line 20

def qry_values(*args)
  klass.qry_values qry_options(*args)
end

#to_qry(*args) ⇒ Object



8
9
10
# File 'lib/directive_record/gem_ext/active_record/relation.rb', line 8

def to_qry(*args)
  klass.to_qry qry_options(*args)
end