Sha256: b059c96f1e7c59716acaa71d881064560b8ec0cdd2e34ed9bf62153000ef52e1

Contents?: true

Size: 531 Bytes

Versions: 2

Compression:

Stored size: 531 Bytes

Contents

module Arel
  class Where < Compound
    attr_reader :predicates

    def initialize(relation, predicates)
      super(relation)
      @predicates = predicates.respond_to?(:map) ?
        predicates.map { |p| p.bind(relation) } : [predicates.bind(relation)]
      @wheres = nil
    end

    def wheres
      @wheres ||= relation.wheres + predicates
    end

    def eval
      unoperated_rows.select { |row| predicates.all? { |p| p.eval(row) } }
    end

    def to_sql(formatter = nil)
      compiler.select_sql
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
arel-1.0.1 lib/arel/algebra/relations/operations/where.rb
arel-1.0.0 lib/arel/algebra/relations/operations/where.rb