thumbs_up 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1 @@
1
+ *.gem
data/README.markdown CHANGED
@@ -59,9 +59,12 @@ Usage
59
59
  ### To cast a vote for a Model you can do the following:
60
60
 
61
61
  #### Shorthand syntax
62
- voter.vote_for(voteable) # Adds a +1 vote
63
- voter.vote_against(voteable) # Adds a -1 vote
64
- voter.vote(voteable, vote) # Adds either a +1 or -1 vote: vote => true (+1), vote => false (-1)
62
+ voter.vote_for(voteable) # Adds a +1 vote
63
+ voter.vote_against(voteable) # Adds a -1 vote
64
+ voter.vote(voteable, vote) # Adds either a +1 or -1 vote: vote => true (+1), vote => false (-1)
65
+
66
+ voter.vote_exclusively_for(voteable) # Removes any previous votes by that particular voter, and votes for.
67
+ voter.vote_exclusively_for(voteable) # Removes any previous votes by that particular voter, and votes against.
65
68
 
66
69
  ### Querying votes
67
70
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.2
1
+ 0.2.3
data/lib/acts_as_voter.rb CHANGED
@@ -57,15 +57,33 @@ module ThumbsUp #:nodoc:
57
57
  end
58
58
 
59
59
  def vote_for(voteable)
60
- self.vote(voteable, true)
60
+ self.vote(voteable, { :direction => :up, :exclusive => false })
61
61
  end
62
62
 
63
63
  def vote_against(voteable)
64
- self.vote(voteable, false)
64
+ self.vote(voteable, { :direction => :down, :exclusive => false })
65
65
  end
66
66
 
67
- def vote(voteable, vote)
68
- Vote.create!(:vote => vote, :voteable => voteable, :voter => self)
67
+ def vote_exclusively_for(voteable)
68
+ self.vote(voteable, { :direction => :up, :exclusive => true })
69
+ end
70
+
71
+ def vote_exclusively_against(voteable)
72
+ self.vote(voteable, { :direction => :down, :exclusive => true })
73
+ end
74
+
75
+ def vote(voteable, options = {})
76
+ raise ArgumentError "you must specify :up or :down in order to vote" unless options[:direction] && [:up, :down].include?(options[:direction].to_sym)
77
+ if options[:exclusive]
78
+ Vote.where(
79
+ :voter_id => self.id,
80
+ :voter_type => self.class.name,
81
+ :voteable_id => voteable.id,
82
+ :voteable_type => voteable.class.name
83
+ ).map(&:destroy)
84
+ end
85
+ direction = (options[:direction].to_sym == :up ? true : false)
86
+ Vote.create!(:vote => direction, :voteable => voteable, :voter => self)
69
87
  end
70
88
 
71
89
  def voted_which_way?(voteable, direction)
data/thumbs_up.gemspec CHANGED
@@ -5,18 +5,19 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{thumbs_up}
8
- s.version = "0.2.2"
8
+ s.version = "0.2.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Brady Bouchard", "Peter Jackson", "Cosmin Radoi", "Bence Nagy", "Rob Maddox", "Wojciech Wn\304\231trzak"]
12
- s.date = %q{2010-08-04}
11
+ s.authors = ["Brady Bouchard", "Peter Jackson", "Cosmin Radoi", "Bence Nagy", "Rob Maddox", "Wojciech Wnętrzak"]
12
+ s.date = %q{2010-08-06}
13
13
  s.description = %q{ThumbsUp provides dead-simple voting capabilities to ActiveRecord models with karma calculation, a la stackoverflow.com.}
14
14
  s.email = %q{brady@ldawn.com}
15
15
  s.extra_rdoc_files = [
16
16
  "README.markdown"
17
17
  ]
18
18
  s.files = [
19
- "CHANGELOG.markdown",
19
+ ".gitignore",
20
+ "CHANGELOG.markdown",
20
21
  "MIT-LICENSE",
21
22
  "README.markdown",
22
23
  "Rakefile",
metadata CHANGED
@@ -1,13 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: thumbs_up
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
5
4
  prerelease: false
6
5
  segments:
7
6
  - 0
8
7
  - 2
9
- - 2
10
- version: 0.2.2
8
+ - 3
9
+ version: 0.2.3
11
10
  platform: ruby
12
11
  authors:
13
12
  - Brady Bouchard
@@ -20,7 +19,7 @@ autorequire:
20
19
  bindir: bin
21
20
  cert_chain: []
22
21
 
23
- date: 2010-08-04 00:00:00 +10:00
22
+ date: 2010-08-06 00:00:00 +10:00
24
23
  default_executable:
25
24
  dependencies: []
26
25
 
@@ -33,6 +32,7 @@ extensions: []
33
32
  extra_rdoc_files:
34
33
  - README.markdown
35
34
  files:
35
+ - .gitignore
36
36
  - CHANGELOG.markdown
37
37
  - MIT-LICENSE
38
38
  - README.markdown
@@ -61,7 +61,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
61
61
  requirements:
62
62
  - - ">="
63
63
  - !ruby/object:Gem::Version
64
- hash: 3
65
64
  segments:
66
65
  - 0
67
66
  version: "0"
@@ -70,7 +69,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
70
69
  requirements:
71
70
  - - ">="
72
71
  - !ruby/object:Gem::Version
73
- hash: 3
74
72
  segments:
75
73
  - 0
76
74
  version: "0"