action_tracker_ext.rb
1.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Rails.configuration.to_prepare do
ActionTracker::Record.class_eval do
extend CacheCounterHelper
after_create do |record|
ActionTracker::Record.update_cache_counter(:activities_count, record.user, 1)
if record.target.kind_of?(Organization)
ActionTracker::Record.update_cache_counter(:activities_count, record.target, 1)
end
end
has_many :profile_activities, foreign_key: :activity_id, conditions: {profile_activities: {activity_type: 'ActionTracker::Record'}}, dependent: :destroy
after_create :create_activity
after_update :update_activity
after_destroy do |record|
if record.created_at >= ActionTracker::Record::RECENT_DELAY.days.ago
ActionTracker::Record.update_cache_counter(:activities_count, record.user, -1)
if record.target.kind_of?(Organization)
ActionTracker::Record.update_cache_counter(:activities_count, record.target, -1)
end
end
end
protected
def create_activity
target = if self.target.is_a? Profile then self.target else self.target.profile rescue self.user end
return if self.verb.in? target.exclude_verbs_on_activities
ProfileActivity.create! profile: target, activity: self
end
def update_activity
ProfileActivity.update_activity self
end
end
end