aboutsummaryrefslogtreecommitdiffstats
path: root/lib/active_relation/relations/selection.rb
blob: e102d105a0cf475be2a392fb0407b9b1b734e342 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
module ActiveRelation
  module Relations
    class Selection < Compound
      attr_reader :relation, :predicate
  
      def initialize(relation, *predicates)
        @predicate = predicates.shift
        @relation = predicates.empty?? relation : Selection.new(relation, *predicates)
      end
  
      def ==(other)
        relation == other.relation and predicate == other.predicate
      end
  
      def qualify
        Selection.new(relation.qualify, predicate.qualify)
      end
  
      protected
      def selects
        relation.send(:selects) + [predicate]
      end
    end
  end
end