Sha256: f4049c2189535fda95a92df56c99d208d7699b80903657e2c15d8cf54a8a826b
Contents?: true
Size: 872 Bytes
Versions: 1
Compression:
Stored size: 872 Bytes
Contents
module CohortScope class Cohort < ::Arel::Nodes::Node IMPOSSIBLE = '1 = 2' def initialize(active_record, characteristics, minimum_cohort_size) @active_record = active_record @characteristics = characteristics @minimum_cohort_size = minimum_cohort_size end def expr @expr ||= resolve end alias :to_sql :expr private # Recursively look for a scope that meets the characteristics and is at least <tt>minimum_cohort_size</tt>. def resolve if @characteristics.empty? IMPOSSIBLE elsif (current = @active_record.where(CohortScope.conditions_for(@characteristics))).count >= @minimum_cohort_size current.constraints.inject(:and).to_sql else @characteristics = self.class.reduce_characteristics(@active_record, @characteristics) resolve end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
cohort_scope-0.3.0 | lib/cohort_scope/cohort.rb |