module YeshuaCrm::ActsAsVotable::Voter

Public Class Methods

included(base) click to toggle source
# File lib/yeshua_crm/acts_as_votable/voter.rb, line 4
def self.included(base)
  # allow user to define these
  aliases = {
    :vote_up_for    => [:likes, :upvotes, :up_votes],
    :vote_down_for  => [:dislikes, :downvotes, :down_votes],
    :unvote_for     => [:unlike, :undislike],
    :voted_on?      => [:voted_for?],
    :voted_up_on?   => [:voted_up_for?, :liked?],
    :voted_down_on? => [:voted_down_for?, :disliked?],
    :voted_as_when_voting_on => [:voted_as_when_voted_on, :voted_as_when_voting_for, :voted_as_when_voted_for],
    :find_up_voted_items   => [:find_liked_items],
    :find_down_voted_items => [:find_disliked_items]
  }

  base.class_eval do
    has_many :votes, :class_name => 'YeshuaCrm::ActsAsVotable::Vote', :as => :voter, :dependent => :destroy do
      def votables
        includes(:votable).map(&:votable)
      end
    end

    aliases.each do |method, links|
      links.each do |new_method|
        alias_method(new_method, method)
      end
    end
  end
end
voter?() click to toggle source
# File lib/yeshua_crm/acts_as_votable/rcrm_acts_as_voter.rb, line 13
def self.voter?
  true
end

Public Instance Methods

find_down_voted_items(extra_conditions = {}) click to toggle source
# File lib/yeshua_crm/acts_as_votable/voter.rb, line 114
def find_down_voted_items(extra_conditions = {})
  find_voted_items extra_conditions.merge(:vote_flag => false)
end
find_down_votes(args = {}) click to toggle source
# File lib/yeshua_crm/acts_as_votable/voter.rb, line 84
def find_down_votes(args = {})
  find_votes :vote_flag => false, :vote_scope => args[:vote_scope]
end
find_down_votes_for_class(klass, args = {}) click to toggle source
# File lib/yeshua_crm/acts_as_votable/voter.rb, line 96
def find_down_votes_for_class(klass, args = {})
  find_votes_for_class klass, :vote_flag => false, :vote_scope => args[:vote_scope]
end
find_up_voted_items(extra_conditions = {}) click to toggle source
# File lib/yeshua_crm/acts_as_votable/voter.rb, line 110
def find_up_voted_items(extra_conditions = {})
  find_voted_items extra_conditions.merge(:vote_flag => true)
end
find_up_votes(args = {}) click to toggle source
# File lib/yeshua_crm/acts_as_votable/voter.rb, line 80
def find_up_votes(args = {})
  find_votes :vote_flag => true, :vote_scope => args[:vote_scope]
end
find_up_votes_for_class(klass, args = {}) click to toggle source
# File lib/yeshua_crm/acts_as_votable/voter.rb, line 92
def find_up_votes_for_class(klass, args = {})
  find_votes_for_class klass, :vote_flag => true, :vote_scope => args[:vote_scope]
end
find_voted_items(extra_conditions = {}) click to toggle source
# File lib/yeshua_crm/acts_as_votable/voter.rb, line 105
def find_voted_items(extra_conditions = {})
  options = extra_conditions.merge :voter_id => id, :voter_type => self.class.base_class.name
  include_objects.where(options).collect(&:votable)
end
find_votes(extra_conditions = {}) click to toggle source
# File lib/yeshua_crm/acts_as_votable/voter.rb, line 76
def find_votes(extra_conditions = {})
  votes.where(extra_conditions)
end
find_votes_for_class(klass, extra_conditions = {}) click to toggle source
# File lib/yeshua_crm/acts_as_votable/voter.rb, line 88
def find_votes_for_class(klass, extra_conditions = {})
  find_votes extra_conditions.merge(:votable_type => klass.name)
end
get_down_voted(klass) click to toggle source
# File lib/yeshua_crm/acts_as_votable/voter.rb, line 126
def get_down_voted(klass)
  klass.joins(:votes_for).merge find_down_votes
end
get_up_voted(klass) click to toggle source
# File lib/yeshua_crm/acts_as_votable/voter.rb, line 122
def get_up_voted(klass)
  klass.joins(:votes_for).merge find_up_votes
end
get_voted(klass, extra_conditions = {}) click to toggle source
# File lib/yeshua_crm/acts_as_votable/voter.rb, line 118
def get_voted(klass, extra_conditions = {})
  klass.joins(:votes_for).merge find_votes(extra_conditions)
end
include_objects() click to toggle source

Including polymporphic relations for eager loading

# File lib/yeshua_crm/acts_as_votable/voter.rb, line 101
def include_objects
  YeshuaCrm::ActsAsVotable::Vote.includes(:votable)
end
rcrm_acts_as_voter(*args) click to toggle source
# File lib/yeshua_crm/acts_as_votable/rcrm_acts_as_voter.rb, line 8
def rcrm_acts_as_voter(*args)
  require 'yeshua_crm/acts_as_votable/voter'
  include YeshuaCrm::ActsAsVotable::Voter

  class_eval do
    def self.voter?
      true
    end
  end
end
unvote_for(model, args = {}) click to toggle source
# File lib/yeshua_crm/acts_as_votable/voter.rb, line 46
def unvote_for(model, args = {})
  model.unvote :voter => self, :vote_scope => args[:vote_scope]
end
votables() click to toggle source
# File lib/yeshua_crm/acts_as_votable/voter.rb, line 20
def votables
  includes(:votable).map(&:votable)
end
vote(args) click to toggle source

voting

# File lib/yeshua_crm/acts_as_votable/voter.rb, line 34
def vote(args)
  args[:votable].vote_by args.merge(:voter => self)
end
vote_down_for(model = nil, args = {}) click to toggle source
# File lib/yeshua_crm/acts_as_votable/voter.rb, line 42
def vote_down_for(model = nil, args = {})
  vote :votable => model, :vote_scope => args[:vote_scope], :vote => false
end
vote_up_for(model = nil, args = {}) click to toggle source
# File lib/yeshua_crm/acts_as_votable/voter.rb, line 38
def vote_up_for(model = nil, args = {})
  vote :votable => model, :vote_scope => args[:vote_scope], :vote => true
end
voted_as_when_voting_on(votable, args = {}) click to toggle source
# File lib/yeshua_crm/acts_as_votable/voter.rb, line 69
def voted_as_when_voting_on(votable, args = {})
  vote = find_votes(:votable_id => votable.id, :votable_type => votable.class.base_class.name,
                    :vote_scope => args[:vote_scope]).select(:vote_flag).last
  return nil unless vote
  vote.vote_flag
end
voted_down_on?(votable, args = {}) click to toggle source
# File lib/yeshua_crm/acts_as_votable/voter.rb, line 63
def voted_down_on?(votable, args = {})
  votes = find_votes(:votable_id => votable.id, :votable_type => votable.class.base_class.name,
                     :vote_scope => args[:vote_scope], :vote_flag => false)
  !votes.empty?
end
voted_on?(votable, args = {}) click to toggle source

results

# File lib/yeshua_crm/acts_as_votable/voter.rb, line 51
def voted_on?(votable, args = {})
  votes = find_votes(:votable_id => votable.id, :votable_type => votable.class.base_class.name,
                     :vote_scope => args[:vote_scope])
  !votes.empty?
end
voted_up_on?(votable, args = {}) click to toggle source
# File lib/yeshua_crm/acts_as_votable/voter.rb, line 57
def voted_up_on?(votable, args = {})
  votes = find_votes(:votable_id => votable.id, :votable_type => votable.class.base_class.name,
                     :vote_scope => args[:vote_scope], :vote_flag => true)
  !votes.empty?
end
voter?() click to toggle source
# File lib/yeshua_crm/acts_as_votable/rcrm_acts_as_voter.rb, line 4
def voter?
  false
end