Sha256: 5c92986593332d2b7b4978e3f061f31a06e58bf9c5fd3663da36f04dfb7e160e

Contents?: true

Size: 732 Bytes

Versions: 1

Compression:

Stored size: 732 Bytes

Contents

module Socialization
  module Followable
    def self.included(base)
      base.class_eval do
        # A following is the Follow record of the follower following self.
        has_many :followings, :as => :followable, :dependent => :destroy, :class_name => 'Follow'

        def is_followable?
          true
        end

        def followed_by?(follower)
          raise ArgumentError, "#{follower} is not a follower!" unless follower.respond_to?(:is_follower?) && follower.is_follower?
          !self.followings.where(:follower_type => follower.class.to_s, :follower_id => follower.id).pluck("1").empty?
        end

        def followers
          self.followings.map { |f| f.follower }
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
socialization-0.1.0 lib/socialization/followable.rb