Sha256: 8dbf681a9ee25f055e9e4e426492b27afa09fe3be80c20bb51494519947f9203

Contents?: true

Size: 662 Bytes

Versions: 1

Compression:

Stored size: 662 Bytes

Contents

module Socialization
  module Likeable
    def self.included(base)
      base.class_eval do
        # A liking is the Like record of the liker liking self.
        has_many :likings, :as => :likeable, :dependent => :destroy, :class_name => 'Like'

        def is_likeable?
          true
        end

        def liked_by?(liker)
          raise ArgumentError, "#{liker} is not a liker!" unless liker.respond_to?(:is_liker?) && liker.is_liker?
          !self.likings.where(:liker_type => liker.class.to_s, :liker_id => liker.id).pluck("1").empty?
        end

        def likers
          self.likings.map { |l| l.liker }
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

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