Sha256: 1292f8c4973493318477c290d55825e8f746389b8cb0df895fbe5154e6ad4091

Contents?: true

Size: 603 Bytes

Versions: 1

Compression:

Stored size: 603 Bytes

Contents

module SocialEngine
  module Voteable
    def is_voteable
      has_many :votes, :as=>:voteable, :dependent=>:destroy
      include InstanceMethods
    end
    
    module InstanceMethods
      def voteable?
        true
      end
      
      def upvote(options={})
        options.reverse_merge!(:value=>1)
        self.votes.create(options)
      end
      
      def downvote(options={})
        options.reverse_merge!(:value=>-1)
        self.votes.create(options)
      end
      
      def vote_sum
        self.votes.inject(0){|sum,vote| sum = sum + vote.value}
      end      
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
social_engine-0.0.1 app/models/social_engine/voteable.rb