Module: Activr::Entity::ModelMixin

Extended by:
ActiveSupport::Concern
Defined in:
lib/activr/entity/model_mixin.rb

Overview

Including that module in your model class adds these methods: #activities, #activities_count and #delete_activities!.

If you plan to call either #activities or #activities_count methods then set the ‘:feed_index => true` entity setting to ensure that an index is correctly setup when running the `rake activr:create_indexes` task.

If you plan to call #delete_activities! method then you should set the ‘:deletable => true` entity setting to ensure that a deletion index is correctly setup when running the `rake activr:create_indexes` task.

Examples:

Model:

class User

  # inject sugar methods
  include Activr::Entity::ModelMixin

  activr_entity :feed_index => true, :deletable => true

  include Mongoid::Document

  field :_id, :type => String
  field :first_name, :type => String
  field :last_name, :type => String

  def fullname
    "#{self.first_name} #{self.last_name}"
  end

  after_destroy :delete_activities!

end

Usage:

user = User.find('john')

puts "#{user.fullname} has #{user.activities_count} activites. Here are the 10 most recent:"

user.activities(10).each do |activity|
  puts activity.humanize
end

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#activities(limit, options = { }) ⇒ Array<Activity>

Fetch activities



97
98
99
# File 'lib/activr/entity/model_mixin.rb', line 97

def activities(limit, options = { })
  Activr.activities(limit, options.merge(self.activr_entity_feed_actual_name => self.id))
end

#activities_countInteger

Get total number of activities



104
105
106
# File 'lib/activr/entity/model_mixin.rb', line 104

def activities_count
  Activr.activities_count(self.activr_entity_feed_actual_name => self.id)
end

#activr_entity_feed_actual_nameObject

sugar



88
89
90
# File 'lib/activr/entity/model_mixin.rb', line 88

def activr_entity_feed_actual_name
  self.class.activr_entity_feed_actual_name
end

#delete_activities!Object

Delete all activities and timeline entries that reference that entity



109
110
111
112
113
114
115
# File 'lib/activr/entity/model_mixin.rb', line 109

def delete_activities!
  # delete activities
  Activr.storage.delete_activities_for_entity_model(self)

  # delete timeline entries
  Activr.storage.delete_timeline_entries_for_entity_model(self)
end