Sha256: 84094eef5873c107f56f2b44c73f57393b0dc2caaa14f395e763cf78087aa984
Contents?: true
Size: 1.67 KB
Versions: 2
Compression:
Stored size: 1.67 KB
Contents
require 'active_support/concern' module SocialStream module Models # Additional features for models that are Activity Objects module ActivityObject extend ActiveSupport::Concern included do attr_accessor :_activity_tie_id attr_accessor :_activity_parent_id belongs_to :activity_object, :dependent => :destroy has_many :activity_object_activities, :through => :activity_object delegate :post_activity, :to => :activity_object alias_method_chain :create_activity_object, :type before_create :create_activity_object before_create :create_post_activity before_update :create_update_activity validates_presence_of :_activity_tie end module InstanceMethods def activities activity_object_activities.includes(:activity).map(&:activity).uniq end # Create corresponding ActivityObject including this class type def create_activity_object_with_type(attributes = {}) #:nodoc: create_activity_object_without_type attributes.update(:object_type => self.class.to_s) end def _activity_tie @_activity_tie ||= Tie.find(_activity_tie_id) end private def create_post_activity create_activity "post" end def create_update_activity create_activity "update" end def create_activity(verb) activity_object.activities.create! :verb => verb, :tie => _activity_tie, :parent_id => _activity_parent_id end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
social_stream-0.0.2 | lib/social_stream/models/activity_object.rb |
social_stream-0.0.1 | lib/social_stream/models/activity_object.rb |