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