voteable_mongoid 0.6.3 → 0.6.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/CHANGELOG.rdoc CHANGED
@@ -1,3 +1,6 @@
1
+ == 0.6.4
2
+ * Drop Voter#votees, Voter#up_votees, Voter#down_votees in favor of Voteable#voted_by(voter), Voteable#up_voted_by(voter), Voteable#down_voted_by(voter) scopes
3
+
1
4
  == 0.6.3
2
5
  * Add rake db:mongoid:voteable:migrate_old_votes to migrate vote data created by version < 0.6.0 to new vote data storage
3
6
 
data/README.rdoc CHANGED
@@ -1,9 +1,10 @@
1
1
  = Voteable Mongoid
2
2
 
3
- Voteable Mongoid allows you to make your Mongoid::Document objects voteable (up or down)
3
+ Voteable Mongoid allows you to make your Mongoid::Document objects voteable (up or down).
4
4
  For instance, in a forum, a user can vote up (or down) on a post or a comment.
5
5
 
6
- Voteable Mongoid is built for speed. It minimizes vote data storage and uses only one database request per collection to do both data validation and data update.
6
+ Voteable Mongoid is built for speed. It minimizes vote data storage and uses
7
+ only one database request per collection to do both data validation and data update.
7
8
 
8
9
  Sample app at https://github.com/vinova/simple_qa
9
10
 
@@ -72,30 +73,36 @@ user.rb
72
73
  puts @post.up_votes_count
73
74
  puts @post.down_votes_count
74
75
 
75
- === Getting the list of voted objects (votees) of a class
76
+ === Getting the list of voted objects of a class
76
77
 
77
- @user.votees(Post)
78
+ Post.voted_by(@user)
79
+ Post.up_voted_by(@user)
80
+ Post.down_voted_by(@user)
78
81
 
79
82
  === Undo a vote
80
83
 
81
84
  @user.unvote(@comment)
82
85
 
83
- === Re-generate counters and vote points
86
+ == Utilities
84
87
 
88
+ === Re-generate counters and vote points in case you change :up / :down vote points
85
89
  Rails
86
90
  rake db:mongoid:voteable:remake_stats
87
-
88
91
  Ruby
89
92
  Mongoid::Voteable::Stats.remake
90
93
 
91
94
  === Set counters and point to 0 for uninitialized voteable objects in order sort and query
92
-
93
95
  Rails
94
96
  rake db:mongoid:voteable:init_stats
95
-
96
97
  Ruby
97
98
  Mongoid::Voteable::Stats.init
98
99
 
100
+ === Migrate from version < 0.6.0
101
+ Rails
102
+ rake db:mongoid:voteable:migrate_old_votes
103
+ Ruby
104
+ Mongoid::Voteable.migrate_old_votes
105
+
99
106
  == Credits
100
107
 
101
108
  * Alex N. - Author
@@ -1,3 +1,3 @@
1
1
  module VoteableMongoid
2
- VERSION = '0.6.3'
2
+ VERSION = '0.6.4'
3
3
  end
@@ -11,6 +11,21 @@ module Mongoid
11
11
  include Mongoid::Voteable::Stats
12
12
  field :votes, :type => Mongoid::Voteable::Votes
13
13
 
14
+ scope :voted_by, lambda { |voter|
15
+ voter_id = voter.is_a?(BSON::ObjectId) ? voter : voter._id
16
+ any_of({ UP_VOTER_IDS => voter_id }, { DOWN_VOTER_IDS => voter_id })
17
+ }
18
+
19
+ scope :up_voted_by, lambda { |voter|
20
+ voter_id = voter.is_a?(BSON::ObjectId) ? voter : voter._id
21
+ where( UP_VOTER_IDS => voter_id )
22
+ }
23
+
24
+ scope :down_voted_by, lambda { |voter|
25
+ voter_id = voter.is_a?(BSON::ObjectId) ? voter : voter._id
26
+ where( DOWN_VOTER_IDS => voter_id )
27
+ }
28
+
14
29
  before_create do
15
30
  # Init votes so that counters and point have numeric values (0)
16
31
  self.votes = VOTES_DEFAULT_ATTRIBUTES
@@ -201,7 +216,6 @@ module Mongoid
201
216
  end
202
217
  true
203
218
  end
204
-
205
219
  end
206
220
 
207
221
  # Make a vote on this votee
@@ -224,7 +238,7 @@ module Mongoid
224
238
 
225
239
  # Get a voted value on this votee
226
240
  #
227
- # @param [Mongoid Object, BSON::ObjectId] voter is Mongoid object the id of the voter who made the vote
241
+ # @param [Mongoid Object, BSON::ObjectId] voter is Mongoid object or the id of the voter who made the vote
228
242
  def vote_value(voter)
229
243
  voter_id = voter.is_a?(BSON::ObjectId) ? voter : voter._id
230
244
  return :up if up_voter_ids.include?(voter_id)
@@ -2,30 +2,6 @@ module Mongoid
2
2
  module Voter
3
3
  extend ActiveSupport::Concern
4
4
 
5
- # Get list of voted votees
6
- #
7
- # @param [Class] klass the voteable class, e.g. `Post` or `Comment`
8
- # @return [Array, nil] an array of voteable objects voted by this voter
9
- def votees(klass)
10
- klass.any_of({ Voteable::UP_VOTER_IDS => _id }, { Voteable::DOWN_VOTER_IDS => _id })
11
- end
12
-
13
- # Get list of up voted votees
14
- #
15
- # @param [Class] klass the voteable class, e.g. `Post` or `Comment`
16
- # @return [Array, nil] an array of voteable objects up voted by this voter
17
- def up_votees(klass)
18
- klass.where(Voteable::UP_VOTER_IDS => _id)
19
- end
20
-
21
- # Get list of down voted votees
22
- #
23
- # @param [Class] klass the voteable class, e.g. `Post` or `Comment`
24
- # @return [Array, nil] an array of voteable objects down voted by this voter
25
- def down_votees(klass)
26
- klass.where(Voteable::DOWN_VOTER_IDS => _id)
27
- end
28
-
29
5
  # Check to see if this voter voted on the votee or not
30
6
  #
31
7
  # @param [Hash, Object] options the hash containing the votee, or the votee itself
@@ -45,7 +21,7 @@ module Mongoid
45
21
  end
46
22
  end
47
23
 
48
- votees(votee_class).where(:_id => votee_id).count == 1
24
+ votee_class.voted_by(self).where(:_id => votee_id).count == 1
49
25
  end
50
26
 
51
27
  # Get the voted value on a votee
@@ -33,9 +33,9 @@ describe Mongoid::Voteable do
33
33
  @post2.down_voter_ids.should be_empty
34
34
  end
35
35
 
36
- it 'voter votees should be empty' do
37
- @user1.votees(Post).should be_empty
38
- @user2.votees(Post).should be_empty
36
+ it 'posts voted voter should be empty' do
37
+ Post.voted_by(@user1).should be_empty
38
+ Post.voted_by(@user2).should be_empty
39
39
  end
40
40
 
41
41
  it 'test Stats.init' do
@@ -91,8 +91,8 @@ describe Mongoid::Voteable do
91
91
  @post1.vote_value(@user1).should == :up
92
92
  @post1.vote_value(@user2.id).should be_nil
93
93
 
94
- @user1.votees(Post).to_a.should == [ @post1 ]
95
- @user2.votees(Post).to_a.should be_empty
94
+ Post.voted_by(@user1).to_a.should == [ @post1 ]
95
+ Post.voted_by(@user2).to_a.should be_empty
96
96
  end
97
97
 
98
98
  it 'user1 vote post1 has no effect' do
@@ -123,8 +123,8 @@ describe Mongoid::Voteable do
123
123
  @post1.vote_value(@user1.id).should == :up
124
124
  @post1.vote_value(@user2.id).should == :down
125
125
 
126
- @user1.votees(Post).to_a.should == [ @post1 ]
127
- @user2.votees(Post).to_a.should == [ @post1 ]
126
+ Post.voted_by(@user1).to_a.should == [ @post1 ]
127
+ Post.voted_by(@user2).to_a.should == [ @post1 ]
128
128
  end
129
129
  end
130
130
 
@@ -144,8 +144,8 @@ describe Mongoid::Voteable do
144
144
  @post1.vote_value(@user1.id).should == :down
145
145
  @post1.vote_value(@user2.id).should == :down
146
146
 
147
- @user1.votees(Post).to_a.should == [ @post1 ]
148
- @user2.votees(Post).to_a.should == [ @post1 ]
147
+ Post.voted_by(@user1).to_a.should == [ @post1 ]
148
+ Post.voted_by(@user2).to_a.should == [ @post1 ]
149
149
  end
150
150
  end
151
151
 
@@ -164,7 +164,7 @@ describe Mongoid::Voteable do
164
164
  @post2.vote_value(@user1.id).should == :down
165
165
  @post2.vote_value(@user2.id).should be_nil
166
166
 
167
- @user1.votees(Post).to_a.should == [ @post1, @post2 ]
167
+ Post.voted_by(@user1).to_a.should == [ @post1, @post2 ]
168
168
  end
169
169
  end
170
170
 
@@ -184,7 +184,7 @@ describe Mongoid::Voteable do
184
184
  @post2.vote_value(@user1.id).should == :up
185
185
  @post2.vote_value(@user2.id).should be_nil
186
186
 
187
- @user1.votees(Post).to_a.should == [ @post1, @post2 ]
187
+ Post.voted_by(@user1).to_a.should == [ @post1, @post2 ]
188
188
  end
189
189
  end
190
190
 
@@ -260,7 +260,7 @@ describe Mongoid::Voteable do
260
260
  @post1.vote_value(@user1.id).should be_nil
261
261
  @post1.vote_value(@user2.id).should == :down
262
262
 
263
- @user1.votees(Post).to_a.should_not include(@post1)
263
+ Post.voted_by(@user1).to_a.should_not include(@post1)
264
264
  end
265
265
  end
266
266
 
@@ -13,15 +13,15 @@ describe Mongoid::Voter do
13
13
 
14
14
  context "just created" do
15
15
  it '' do
16
- @user1.votees(Post).should be_empty
17
- @user1.up_votees(Post).should be_empty
18
- @user1.down_votees(Post).should be_empty
16
+ Post.voted_by(@user1).should be_empty
17
+ Post.up_voted_by(@user1).should be_empty
18
+ Post.down_voted_by(@user1).should be_empty
19
19
  @user1.voted?(@post1).should be_false
20
20
  @user1.voted?(@post2).should be_false
21
21
 
22
- @user2.votees(Post).should be_empty
23
- @user2.up_votees(Post).should be_empty
24
- @user2.down_votees(Post).should be_empty
22
+ Post.voted_by(@user2).should be_empty
23
+ Post.up_voted_by(@user2).should be_empty
24
+ Post.down_voted_by(@user2).should be_empty
25
25
  @user2.voted?(@post1).should be_false
26
26
  @user2.voted?(@post2).should be_false
27
27
  end
@@ -51,10 +51,10 @@ describe Mongoid::Voter do
51
51
  @user1.should be_voted(@post1)
52
52
  @user2.should_not be_voted(:votee_type => 'Post', :votee_id => @post1.id)
53
53
 
54
- @user1.votees(Post).to_a.should == [ @post1 ]
55
- @user1.up_votees(Post).to_a.should == [ @post1 ]
56
- @user1.down_votees(Post).to_a.should be_empty
57
- @user2.votees(Post).to_a.should be_empty
54
+ Post.voted_by(@user1).to_a.should == [ @post1 ]
55
+ Post.up_voted_by(@user1).to_a.should == [ @post1 ]
56
+ Post.down_voted_by(@user1).to_a.should be_empty
57
+ Post.voted_by(@user2).to_a.should be_empty
58
58
  end
59
59
 
60
60
  it 'user1 vote post1 has no effect' do
@@ -81,10 +81,10 @@ describe Mongoid::Voter do
81
81
  @user1.vote_value(@post1).should == :up
82
82
  @user2.vote_value(@post1).should == :down
83
83
 
84
- @user1.votees(Post).to_a.should == [ @post1 ]
85
- @user2.votees(Post).to_a.should == [ @post1 ]
86
- @user2.up_votees(Post).to_a.should be_empty
87
- @user2.down_votees(Post).to_a.should == [ @post1 ]
84
+ Post.voted_by(@user1).to_a.should == [ @post1 ]
85
+ Post.voted_by(@user2).to_a.should == [ @post1 ]
86
+ Post.up_voted_by(@user2).to_a.should be_empty
87
+ Post.down_voted_by(@user2).to_a.should == [ @post1 ]
88
88
  end
89
89
  end
90
90
 
@@ -101,8 +101,8 @@ describe Mongoid::Voter do
101
101
  @user1.vote_value(@post1).should == :down
102
102
  @user2.vote_value(@post1).should == :down
103
103
 
104
- @user1.votees(Post).to_a.should == [ @post1 ]
105
- @user2.votees(Post).to_a.should == [ @post1 ]
104
+ Post.voted_by(@user1).to_a.should == [ @post1 ]
105
+ Post.voted_by(@user2).to_a.should == [ @post1 ]
106
106
  end
107
107
  end
108
108
 
@@ -119,7 +119,7 @@ describe Mongoid::Voter do
119
119
  @user1.vote_value(@post2).should == :down
120
120
  @user2.vote_value(@post2).should be_nil
121
121
 
122
- @user1.votees(Post).to_a.should == [ @post1, @post2 ]
122
+ Post.voted_by(@user1).to_a.should == [ @post1, @post2 ]
123
123
  end
124
124
  end
125
125
 
@@ -136,7 +136,7 @@ describe Mongoid::Voter do
136
136
  @user1.vote_value(@post2).should == :up
137
137
  @user2.vote_value(@post2).should be_nil
138
138
 
139
- @user1.votees(Post).to_a.should == [ @post1, @post2 ]
139
+ Post.voted_by(@user1).to_a.should == [ @post1, @post2 ]
140
140
  end
141
141
  end
142
142
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: voteable_mongoid
3
3
  version: !ruby/object:Gem::Version
4
- hash: 1
4
+ hash: 15
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 6
9
- - 3
10
- version: 0.6.3
9
+ - 4
10
+ version: 0.6.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Alex Nguyen
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-04-01 00:00:00 +08:00
18
+ date: 2011-04-02 00:00:00 +08:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency