diff --git a/lib/impressionist/models/mongoid/impression.rb b/lib/impressionist/models/mongoid/impression.rb index 5e10e337..73de29f9 100644 --- a/lib/impressionist/models/mongoid/impression.rb +++ b/lib/impressionist/models/mongoid/impression.rb @@ -6,7 +6,6 @@ class Impression include Mongoid::Timestamps include Impressionist::CounterCache - Impressionist::SetupAssociation.new(self).set field :impressionable_id, type: BSON::ObjectId field :impressionable_type @@ -23,4 +22,5 @@ class Impression after_save :impressionable_counter_cache_updatable? + belongs_to :impressionable, polymorphic: true end diff --git a/lib/impressionist/models/mongoid/impressionist/impressionable.rb b/lib/impressionist/models/mongoid/impressionist/impressionable.rb index 4311d3b0..77ab63cf 100644 --- a/lib/impressionist/models/mongoid/impressionist/impressionable.rb +++ b/lib/impressionist/models/mongoid/impressionist/impressionable.rb @@ -1,8 +1,6 @@ module Impressionist module Impressionable - - # extends AS::Concern - include Impressionist::IsImpressionable + extend ActiveSupport::Concern # Overides impressionist_count in order to provide mongoid compability def impressionist_count(options={}) @@ -19,8 +17,19 @@ def impressionist_count(options={}) # Count all distinct impressions unless the :all filter is provided distinct = options[:filter] != :all distinct ? imps.where(options[:filter].ne => nil).distinct(options[:filter]).count : imps.count - end + end + + module ClassMethods + def is_impressionable(options={}) + has_many :impressions, + as: :impressionable, + dependent: :delete + @impressionist_cache_options = options + + true + end + end end end