lib/trackoid/aggregates.rb in trackoid-0.1.6 vs lib/trackoid/aggregates.rb in trackoid-0.1.7
- old
+ new
@@ -23,11 +23,11 @@
#
# Example:
#
# <tt>class Page</tt>
# <tt> include Mongoid::Document</tt>
- # <tt> include Mongoid::Document</tt>
+ # <tt> include Mongoid::Tracking</tt>
# <tt> track :visits</tt>
# <tt> aggregate :browsers do |b|</tt>
# <tt> b.split(" ").first</tt>
# <tt> end</tt>
# <tt>end</tt>
@@ -37,11 +37,11 @@
# This model has the following structure:
#
# <tt>belongs_to :page</tt>
# <tt>field :ns, :type => String</tt>
# <tt>field :key, :type => String</tt>
- # <tt>index [:ns, :key], :unique => true</tt>
+ # <tt>index [:page_id, :ns, :key], :unique => true</tt>
# <tt>track :[original_parent_tracking_data]</tt>
# <tt>track :...</tt>
#
# :ns is the "namespace". It's the name you put along the
# "aggregate :browsers" in the original model definition.
@@ -94,10 +94,11 @@
belongs_to_related parent_name.to_sym, :class_name => parent_name.camelize
# Internal fields to track aggregation token and keys
field :ns, :type => String
field :key, :type => String
- index [[:ns, Mongo::ASCENDING], [:key, Mongo::ASCENDING]], :unique => true, :background => true
+ index [["#{parent_name}_id".to_sym, Mongo::ASCENDING], [:ns, Mongo::ASCENDING], [:key, Mongo::ASCENDING]],
+ :unique => true, :background => true
# Include parent tracking data.
parent_name.camelize.constantize.tracked_fields.each {|track_field| track track_field }
end
self.aggregate_klass = internal_aggregates_name.constantize