Sha256: 7c6b9eace83d7d41bacd048df66bd72e3a377c43210bc17a84fabcf25b5f8c3f

Contents?: true

Size: 1.96 KB

Versions: 25

Compression:

Stored size: 1.96 KB

Contents

module SocialStream
  module Models
    # Additional features for models that are Activity Objects
    module Object
      extend ActiveSupport::Concern

      included do
        subtype_of :activity_object,
                   :build => { :object_type => to_s }

        has_many :received_actions,
                 :through => :activity_object

        has_many :activity_object_audiences,
                 :through => :activity_object

        unless self == Actor
          validates_presence_of :author_id, :owner_id, :user_author_id

          after_create :create_post_activity
          # Disable update activity for now
          # It usually appears repeated in the wall and provides no useful information
          #after_update :create_update_activity
        end

        scope :authored_by, lambda { |subject|
          joins(:activity_object).
            merge(ActivityObject.authored_by(subject))
        }

        scope :not_authored_by, lambda { |subject|
          joins(:activity_object).
            merge(ActivityObject.not_authored_by(subject))
        }

        scope :owned_by, lambda { |subject|
          joins(:activity_object).
            merge(ActivityObject.owned_by(subject))
        }

        scope :shared_with, lambda { |subject|
          joins(:activity_object).
            merge(ActivityObject.shared_with(subject))
        }

        scope :collection, lambda { | profile_subject = nil, current_subject = nil|
          joins(:activity_object).
            merge(ActivityObject.collection(profile_subject, current_subject))
        }

        scope :followed_by, lambda { |subject|
          joins(:activity_object).
            merge(ActivityObject.followed_by(subject))
        }

        # Strong parameters
        include ActiveModel::ForbiddenAttributesProtection
      end

      module ClassMethods
        # Nothing here by the moment, but methods are added by other
        # SocialStream's components, such as Ostatus
      end
    end
  end
end

Version data entries

25 entries across 25 versions & 2 rubygems

Version Path
social_stream-2.2.2 base/lib/social_stream/models/object.rb
social_stream-base-2.2.2 lib/social_stream/models/object.rb
social_stream-2.2.1 base/lib/social_stream/models/object.rb
social_stream-base-2.2.1 lib/social_stream/models/object.rb
social_stream-2.2.0 base/lib/social_stream/models/object.rb
social_stream-base-2.2.0 lib/social_stream/models/object.rb
social_stream-2.1.1 base/lib/social_stream/models/object.rb
social_stream-2.1.0 base/lib/social_stream/models/object.rb
social_stream-base-2.1.0 lib/social_stream/models/object.rb
social_stream-2.0.4 base/lib/social_stream/models/object.rb
social_stream-base-2.0.4 lib/social_stream/models/object.rb
social_stream-2.0.3 base/lib/social_stream/models/object.rb
social_stream-base-2.0.3 lib/social_stream/models/object.rb
social_stream-2.0.2 base/lib/social_stream/models/object.rb
social_stream-base-2.0.2 lib/social_stream/models/object.rb
social_stream-2.0.1 base/lib/social_stream/models/object.rb
social_stream-base-2.0.1 lib/social_stream/models/object.rb
social_stream-2.0.0 base/lib/social_stream/models/object.rb
social_stream-base-2.0.0 lib/social_stream/models/object.rb
social_stream-2.0.0.beta3 base/lib/social_stream/models/object.rb