lib/trackoid/aggregates.rb in trackoid-0.2.0 vs lib/trackoid/aggregates.rb in trackoid-0.3.0
- old
+ new
@@ -1,9 +1,12 @@
# encoding: utf-8
module Mongoid #:nodoc:
module Tracking #:nodoc:
module Aggregates
+
+ DEPRECATED_TOKENS = ['hour', 'hours']
+
# This module includes aggregate data extensions to Trackoid instances
def self.included(base)
base.class_eval do
extend ClassMethods
@@ -53,12 +56,12 @@
# <tt>TestModelAggregates.where(:ns => "browsers", :key => "explorer").first</tt>
#
# But you are encouraged to use Trackoid methods whenever possible.
#
def aggregate(name, &block)
- raise Errors::AggregationAlreadyDefined.new(self.name, name) if
- aggregate_fields.has_key? name
+ raise Errors::AggregationAlreadyDefined.new(self.name, name) if aggregate_fields.has_key? name
+ raise Errors::AggregationNameDeprecated.new(name) if DEPRECATED_TOKENS.include? name.to_s
define_aggregate_model if aggregate_klass.nil?
has_many_related internal_accessor_name(name), :class_name => aggregate_klass.to_s
add_aggregate_field(name, block)
create_aggregation_accessors(name)
@@ -81,9 +84,10 @@
end
# Defines the aggregation model. It checks for class name conflicts
def define_aggregate_model
raise Errors::ClassAlreadyDefined.new(internal_aggregates_name) if foreign_class_defined?
+
parent = self
define_klass do
include Mongoid::Document
include Mongoid::Tracking