Sha256: 19aad90320097978bb8f4aec8d5875125ad162451187b0344dcda3287c7cd5b9

Contents?: true

Size: 1.48 KB

Versions: 11

Compression:

Stored size: 1.48 KB

Contents

module ActiveRecord
  class Base
    def is_mentionable?
      false
    end
    alias mentionable? is_mentionable?
  end
end

module Socialization
  module Mentionable
    extend ActiveSupport::Concern

    included do
      after_destroy { Socialization.mention_model.remove_mentioners(self) }

      # Specifies if self can be mentioned.
      #
      # @return [Boolean]
      def is_mentionable?
        true
      end
      alias mentionable? is_mentionable?

      # Specifies if self is mentioned by a {Mentioner} object.
      #
      # @return [Boolean]
      def mentioned_by?(mentioner)
        raise Socialization::ArgumentError, "#{mentioner} is not mentioner!"  unless mentioner.respond_to?(:is_mentioner?) && mentioner.is_mentioner?
        Socialization.mention_model.mentions?(mentioner, self)
      end

      # Returns an array of {Mentioner}s mentioning self.
      #
      # @param [Class] klass the {Mentioner} class to be included. e.g. `User`
      # @return [Array<Mentioner, Numeric>] An array of Mentioner objects or IDs
      def mentioners(klass, opts = {})
        Socialization.mention_model.mentioners(self, klass, opts)
      end

      # Returns a scope of the {Mentioner}s mentioning self.
      #
      # @param [Class] klass the {Mentioner} class to be included in the scope. e.g. `User`
      # @return ActiveRecord::Relation
      def mentioners_relation(klass, opts = {})
        Socialization.mention_model.mentioners_relation(self, klass, opts)
      end

    end
  end
end

Version data entries

11 entries across 11 versions & 2 rubygems

Version Path
socialization-2.0.2 lib/socialization/subjects/mentionable.rb
socialization-2.0.1 lib/socialization/subjects/mentionable.rb
socialization-2.0.0 lib/socialization/subjects/mentionable.rb
socialization-1.2.3 lib/socialization/subjects/mentionable.rb
socialization-1.2.2 lib/socialization/victims/mentionable.rb
socialization-1.2.1 lib/socialization/victims/mentionable.rb
twrk-socialization-1.2.0 lib/socialization/victims/mentionable.rb
twrk-socialization-0.0.1 lib/socialization/victims/mentionable.rb
socialization-1.2.0 lib/socialization/victims/mentionable.rb
socialization-1.1.0 lib/socialization/victims/mentionable.rb
socialization-1.0.0 lib/socialization/victims/mentionable.rb