class SimpleActivity::Activity

Public Class Methods

actor_activities(obj) click to toggle source

Show activities belongs to an actor

# File lib/simple_activity/models/activity.rb, line 16
def self.actor_activities(obj)
  type = obj.class.to_s
  id   = obj.id
  self.where(actor_type: type, actor_id: id)
end
target_activities(obj) click to toggle source

Show activities belongs to a target

# File lib/simple_activity/models/activity.rb, line 23
def self.target_activities(obj)
  type = obj.class.to_s
  id   = obj.id
  self.where(target_type: type, target_id: id)
end

Private Class Methods

cache_methods() click to toggle source
# File lib/simple_activity/models/activity.rb, line 80
def self.cache_methods
  Rule.get_rules_set self.class.to_s
end

Public Instance Methods

actor() click to toggle source
# File lib/simple_activity/models/activity.rb, line 58
def actor
  actor_type.capitalize.constantize.find(actor_id)
end
cache() click to toggle source
# File lib/simple_activity/models/activity.rb, line 29
def cache
  read_attribute(:cache) || []
end
can_display?() click to toggle source
# File lib/simple_activity/models/activity.rb, line 66
def can_display?
  display
end
method_missing(method_name, *arguments, &block) click to toggle source

Delegate the methods start with “actor_” or “target_” to cached result

Calls superclass method
# File lib/simple_activity/models/activity.rb, line 35
def method_missing(method_name, *arguments, &block)
  if method_name.to_s =~ /(actor|target)_(?!type|id).*/
    self.cache.try(:[], method_name.to_s)
  else
    super
  end
end
respond_to_missing?(method_name, include_private = false) click to toggle source
Calls superclass method
# File lib/simple_activity/models/activity.rb, line 43
def respond_to_missing?(method_name, include_private = false)
  method_name.to_s.match /(actor|target)_.*/ || super
end
rules(set=nil) click to toggle source

Get rules for an activity instance. This can't replace similar method in Processor

@param set [String] The specific rule set want to get

# File lib/simple_activity/models/activity.rb, line 74
def rules(set=nil)
  @rules ||= Rule.get_rules(self.target_type, set)
end
target() click to toggle source
# File lib/simple_activity/models/activity.rb, line 62
def target
  target_type.capitalize.constantize.find(target_id)
end
update_cache(cache_rule) click to toggle source

TODO: Untested

# File lib/simple_activity/models/activity.rb, line 48
def update_cache(cache_rule)
  cache_rule.each do |type, type_methods|
    type_methods.each do |method|
      value = self.send(type).send(method)
      self.cache["#{type}_#{method}"] = value
    end
  end
  save
end

Private Instance Methods

past_form(action) click to toggle source
# File lib/simple_activity/models/activity.rb, line 84
def past_form(action)
  action.last == 'e' ?
    "#{action}d" : "#{action}ed"
end