diff options
Diffstat (limited to 'lib/active_relation/relations/selection.rb')
-rw-r--r-- | lib/active_relation/relations/selection.rb | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/lib/active_relation/relations/selection.rb b/lib/active_relation/relations/selection.rb new file mode 100644 index 0000000000..e102d105a0 --- /dev/null +++ b/lib/active_relation/relations/selection.rb @@ -0,0 +1,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
\ No newline at end of file |