module ThumbsUp::Karma::InstanceMethods
Public Instance Methods
karma(options = {})
click to toggle source
# File lib/has_karma.rb, line 31 def karma(options = {}) self.class.base_class.karmic_objects.collect do |object, attr| v = object.where(["#{self.class.base_class.table_name}.#{self.class.base_class.primary_key} = ?", self.id]) v = v.joins("INNER JOIN #{Vote.table_name} ON #{Vote.table_name}.voteable_type = '#{object.to_s}' AND #{Vote.table_name}.voteable_id = #{object.table_name}.#{object.primary_key}") v = v.joins("INNER JOIN #{self.class.base_class.table_name} ON #{self.class.base_class.table_name}.#{self.class.base_class.primary_key} = #{object.table_name}.#{attr[0]}") upvotes = v.where(["#{Vote.table_name}.vote = ?", true]) downvotes = v.where(["#{Vote.table_name}.vote = ?", false]) if attr[1].length == 1 # Only count upvotes, not downvotes. (upvotes.count.to_f * attr[1].first).round else (upvotes.count.to_f * attr[1].first - downvotes.count.to_f * attr[1].last).round end end.sum end