Sha256: 300ff1306d144f174ce7fdab406dfb8860ed72b46e94f55e2a982cc82edd4926

Contents?: true

Size: 809 Bytes

Versions: 4

Compression:

Stored size: 809 Bytes

Contents

module Groupdate
  class Series
    attr_accessor :magic, :relation

    def initialize(magic, relation)
      @magic = magic
      @relation = relation
    end

    # clone to prevent modifying original variables
    def method_missing(method, *args, &block)
      # https://github.com/rails/rails/blob/master/activerecord/lib/active_record/relation/calculations.rb
      if ActiveRecord::Calculations.method_defined?(method)
        magic.perform(relation, method, *args, &block)
      elsif @relation.respond_to?(method)
        Groupdate::Series.new(magic, relation.send(method, *args, &block))
      else
        super
      end
    end

    def respond_to?(method, include_all = false)
      ActiveRecord::Calculations.method_defined?(method) || relation.respond_to?(method) || super
    end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
groupdate-2.4.0 lib/groupdate/series.rb
groupdate-2.3.0 lib/groupdate/series.rb
groupdate-2.2.1 lib/groupdate/series.rb
groupdate-2.2.0 lib/groupdate/series.rb