voteable_mongoid 0.4.5 → 0.5.0

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.
@@ -27,7 +27,7 @@
27
27
 
28
28
  <ul id="full_list" class="class">
29
29
  <li><span class='object_link'><a href="top-level-namespace.html" title=" (root)">Top Level Namespace</a></span></li>
30
- <li><a class='toggle'></a> <span class='object_link'><a href="Mongoid.html" title="Mongoid (module)">Mongoid</a></span><small class='search_info'>Top Level Namespace</small></li><ul><li><span class='object_link'><a href="Mongoid/Voteable.html" title="Mongoid::Voteable (module)">Voteable</a></span><small class='search_info'>Mongoid</small></li><li><span class='object_link'><a href="Mongoid/Voter.html" title="Mongoid::Voter (module)">Voter</a></span><small class='search_info'>Mongoid</small></li></ul><li><span class='object_link'><a href="VoteableMongoid.html" title="VoteableMongoid (module)">VoteableMongoid</a></span><small class='search_info'>Top Level Namespace</small></li>
30
+ <li><a class='toggle'></a> <span class='object_link'><a href="Mongoid.html" title="Mongoid (module)">Mongoid</a></span><small class='search_info'>Top Level Namespace</small></li><ul><li><a class='toggle'></a> <span class='object_link'><a href="Mongoid/Voteable.html" title="Mongoid::Voteable (module)">Voteable</a></span><small class='search_info'>Mongoid</small></li><ul><li><span class='object_link'><a href="Mongoid/Voteable/Stats.html" title="Mongoid::Voteable::Stats (module)">Stats</a></span><small class='search_info'>Mongoid::Voteable</small></li></ul><li><span class='object_link'><a href="Mongoid/Voter.html" title="Mongoid::Voter (module)">Voter</a></span><small class='search_info'>Mongoid</small></li></ul><li><a class='toggle'></a> <span class='object_link'><a href="Rails.html" title="Rails (module)">Rails</a></span><small class='search_info'>Top Level Namespace</small></li><ul><li><a class='toggle'></a> <span class='object_link'><a href="Rails/VoteableMongoid.html" title="Rails::VoteableMongoid (module)">VoteableMongoid</a></span><small class='search_info'>Rails</small></li><ul><li><span class='object_link'><a href="Rails/VoteableMongoid/Railtie.html" title="Rails::VoteableMongoid::Railtie (class)">Railtie</a></span> &lt; Railtie<small class='search_info'>Rails::VoteableMongoid</small></li></ul></ul><li><span class='object_link'><a href="VoteableMongoid.html" title="VoteableMongoid (module)">VoteableMongoid</a></span><small class='search_info'>Top Level Namespace</small></li>
31
31
 
32
32
  </ul>
33
33
  </div>
@@ -47,12 +47,15 @@
47
47
  <p>Voteable Mongoid allows you to make your Mongoid::Document objects voteable
48
48
  (up or down)</p>
49
49
 
50
- <p>For instance, in a Q&amp;A site, a user can vote up (or down) on a post or
51
- a comment.</p>
50
+ <p>For instance, in a forum, a user can vote up (or down) on a post or a
51
+ comment.</p>
52
52
 
53
53
  <p>When user provided enough information, voteable_mongoid will use only one
54
54
  update-in-place operation per collection.</p>
55
55
 
56
+ <p>Sample app at <a
57
+ href="https://github.com/vinova/simple_qa">github.com/vinova/simple_qa</a></p>
58
+
56
59
  <h2>Installation</h2>
57
60
 
58
61
  <h3>Rails 3.0.x</h3>
@@ -75,7 +78,7 @@ update-in-place operation per collection.</p>
75
78
  <span class='include identifier id'>include</span> <span class='Mongoid constant id'>Mongoid</span><span class='colon2 op'>::</span><span class='Voteable constant id'>Voteable</span>
76
79
 
77
80
  <span class='comment val'># set points for each vote</span>
78
- <span class='vote_point identifier id'>vote_point</span> <span class='self self kw'>self</span><span class='comma token'>,</span> <span class='symbol val'>:up</span> <span class='assign token'>=</span><span class='gt op'>&gt;</span> <span class='integer val'>+1</span><span class='comma token'>,</span> <span class='symbol val'>:down</span> <span class='assign token'>=</span><span class='gt op'>&gt;</span> <span class='integer val'>-1</span>
81
+ <span class='voteable identifier id'>voteable</span> <span class='self self kw'>self</span><span class='comma token'>,</span> <span class='symbol val'>:up</span> <span class='assign token'>=</span><span class='gt op'>&gt;</span> <span class='integer val'>+1</span><span class='comma token'>,</span> <span class='symbol val'>:down</span> <span class='assign token'>=</span><span class='gt op'>&gt;</span> <span class='integer val'>-1</span>
79
82
 
80
83
  <span class='references_many identifier id'>references_many</span> <span class='symbol val'>:comments</span>
81
84
  <span class='end end kw'>end</span>
@@ -91,10 +94,10 @@ update-in-place operation per collection.</p>
91
94
 
92
95
  <span class='referenced_in identifier id'>referenced_in</span> <span class='symbol val'>:post</span>
93
96
 
94
- <span class='vote_point identifier id'>vote_point</span> <span class='self self kw'>self</span><span class='comma token'>,</span> <span class='symbol val'>:up</span> <span class='assign token'>=</span><span class='gt op'>&gt;</span> <span class='integer val'>+1</span><span class='comma token'>,</span> <span class='symbol val'>:down</span> <span class='assign token'>=</span><span class='gt op'>&gt;</span> <span class='integer val'>-3</span>
97
+ <span class='voteable identifier id'>voteable</span> <span class='self self kw'>self</span><span class='comma token'>,</span> <span class='symbol val'>:up</span> <span class='assign token'>=</span><span class='gt op'>&gt;</span> <span class='integer val'>+1</span><span class='comma token'>,</span> <span class='symbol val'>:down</span> <span class='assign token'>=</span><span class='gt op'>&gt;</span> <span class='integer val'>-3</span>
95
98
 
96
99
  <span class='comment val'># each vote on a comment can affect votes count and point of the related post as well</span>
97
- <span class='vote_point identifier id'>vote_point</span> <span class='Post constant id'>Post</span><span class='comma token'>,</span> <span class='symbol val'>:up</span> <span class='assign token'>=</span><span class='gt op'>&gt;</span> <span class='integer val'>+2</span><span class='comma token'>,</span> <span class='symbol val'>:down</span> <span class='assign token'>=</span><span class='gt op'>&gt;</span> <span class='integer val'>-1</span>
100
+ <span class='voteable identifier id'>voteable</span> <span class='Post constant id'>Post</span><span class='comma token'>,</span> <span class='symbol val'>:up</span> <span class='assign token'>=</span><span class='gt op'>&gt;</span> <span class='integer val'>+2</span><span class='comma token'>,</span> <span class='symbol val'>:down</span> <span class='assign token'>=</span><span class='gt op'>&gt;</span> <span class='integer val'>-1</span>
98
101
  <span class='end end kw'>end</span>
99
102
  </pre>
100
103
 
@@ -134,6 +137,18 @@ update-in-place operation per collection.</p>
134
137
  <pre class="code"><span class='@user ivar id'>@user</span><span class='dot token'>.</span><span class='unvote identifier id'>unvote</span><span class='lparen token'>(</span><span class='@comment ivar id'>@comment</span><span class='rparen token'>)</span>
135
138
  </pre>
136
139
 
140
+ <h3>Re-generate counters and vote points</h3>
141
+
142
+ <p>Rails</p>
143
+
144
+ <pre class="code"><span class='rake identifier id'>rake</span> <span class='db identifier id'>db</span><span class='symbol val'>:mongoid</span><span class='symbol val'>:voteable</span><span class='symbol val'>:remake_stats</span>
145
+ </pre>
146
+
147
+ <p>Ruby</p>
148
+
149
+ <pre class="code"><span class='Mongoid constant id'>Mongoid</span><span class='colon2 op'>::</span><span class='Voteable constant id'>Voteable</span><span class='colon2 op'>::</span><span class='Stats constant id'>Stats</span><span class='dot token'>.</span><span class='remake identifier id'>remake</span>
150
+ </pre>
151
+
137
152
  <h2>Credits</h2>
138
153
  <ul><li>
139
154
  <p>Alex N. - Author</p>
@@ -148,7 +163,7 @@ href="http://vinova.sg">vinova.sg</a>)</p>
148
163
  </div></div>
149
164
 
150
165
  <div id="footer">
151
- Generated on Wed Mar 30 11:06:26 2011 by
166
+ Generated on Wed Mar 30 22:06:27 2011 by
152
167
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
153
168
  0.6.5 (ruby-1.8.7).
154
169
  </div>
@@ -47,12 +47,15 @@
47
47
  <p>Voteable Mongoid allows you to make your Mongoid::Document objects voteable
48
48
  (up or down)</p>
49
49
 
50
- <p>For instance, in a Q&amp;A site, a user can vote up (or down) on a post or
51
- a comment.</p>
50
+ <p>For instance, in a forum, a user can vote up (or down) on a post or a
51
+ comment.</p>
52
52
 
53
53
  <p>When user provided enough information, voteable_mongoid will use only one
54
54
  update-in-place operation per collection.</p>
55
55
 
56
+ <p>Sample app at <a
57
+ href="https://github.com/vinova/simple_qa">github.com/vinova/simple_qa</a></p>
58
+
56
59
  <h2>Installation</h2>
57
60
 
58
61
  <h3>Rails 3.0.x</h3>
@@ -75,7 +78,7 @@ update-in-place operation per collection.</p>
75
78
  <span class='include identifier id'>include</span> <span class='Mongoid constant id'>Mongoid</span><span class='colon2 op'>::</span><span class='Voteable constant id'>Voteable</span>
76
79
 
77
80
  <span class='comment val'># set points for each vote</span>
78
- <span class='vote_point identifier id'>vote_point</span> <span class='self self kw'>self</span><span class='comma token'>,</span> <span class='symbol val'>:up</span> <span class='assign token'>=</span><span class='gt op'>&gt;</span> <span class='integer val'>+1</span><span class='comma token'>,</span> <span class='symbol val'>:down</span> <span class='assign token'>=</span><span class='gt op'>&gt;</span> <span class='integer val'>-1</span>
81
+ <span class='voteable identifier id'>voteable</span> <span class='self self kw'>self</span><span class='comma token'>,</span> <span class='symbol val'>:up</span> <span class='assign token'>=</span><span class='gt op'>&gt;</span> <span class='integer val'>+1</span><span class='comma token'>,</span> <span class='symbol val'>:down</span> <span class='assign token'>=</span><span class='gt op'>&gt;</span> <span class='integer val'>-1</span>
79
82
 
80
83
  <span class='references_many identifier id'>references_many</span> <span class='symbol val'>:comments</span>
81
84
  <span class='end end kw'>end</span>
@@ -91,10 +94,10 @@ update-in-place operation per collection.</p>
91
94
 
92
95
  <span class='referenced_in identifier id'>referenced_in</span> <span class='symbol val'>:post</span>
93
96
 
94
- <span class='vote_point identifier id'>vote_point</span> <span class='self self kw'>self</span><span class='comma token'>,</span> <span class='symbol val'>:up</span> <span class='assign token'>=</span><span class='gt op'>&gt;</span> <span class='integer val'>+1</span><span class='comma token'>,</span> <span class='symbol val'>:down</span> <span class='assign token'>=</span><span class='gt op'>&gt;</span> <span class='integer val'>-3</span>
97
+ <span class='voteable identifier id'>voteable</span> <span class='self self kw'>self</span><span class='comma token'>,</span> <span class='symbol val'>:up</span> <span class='assign token'>=</span><span class='gt op'>&gt;</span> <span class='integer val'>+1</span><span class='comma token'>,</span> <span class='symbol val'>:down</span> <span class='assign token'>=</span><span class='gt op'>&gt;</span> <span class='integer val'>-3</span>
95
98
 
96
99
  <span class='comment val'># each vote on a comment can affect votes count and point of the related post as well</span>
97
- <span class='vote_point identifier id'>vote_point</span> <span class='Post constant id'>Post</span><span class='comma token'>,</span> <span class='symbol val'>:up</span> <span class='assign token'>=</span><span class='gt op'>&gt;</span> <span class='integer val'>+2</span><span class='comma token'>,</span> <span class='symbol val'>:down</span> <span class='assign token'>=</span><span class='gt op'>&gt;</span> <span class='integer val'>-1</span>
100
+ <span class='voteable identifier id'>voteable</span> <span class='Post constant id'>Post</span><span class='comma token'>,</span> <span class='symbol val'>:up</span> <span class='assign token'>=</span><span class='gt op'>&gt;</span> <span class='integer val'>+2</span><span class='comma token'>,</span> <span class='symbol val'>:down</span> <span class='assign token'>=</span><span class='gt op'>&gt;</span> <span class='integer val'>-1</span>
98
101
  <span class='end end kw'>end</span>
99
102
  </pre>
100
103
 
@@ -134,6 +137,18 @@ update-in-place operation per collection.</p>
134
137
  <pre class="code"><span class='@user ivar id'>@user</span><span class='dot token'>.</span><span class='unvote identifier id'>unvote</span><span class='lparen token'>(</span><span class='@comment ivar id'>@comment</span><span class='rparen token'>)</span>
135
138
  </pre>
136
139
 
140
+ <h3>Re-generate counters and vote points</h3>
141
+
142
+ <p>Rails</p>
143
+
144
+ <pre class="code"><span class='rake identifier id'>rake</span> <span class='db identifier id'>db</span><span class='symbol val'>:mongoid</span><span class='symbol val'>:voteable</span><span class='symbol val'>:remake_stats</span>
145
+ </pre>
146
+
147
+ <p>Ruby</p>
148
+
149
+ <pre class="code"><span class='Mongoid constant id'>Mongoid</span><span class='colon2 op'>::</span><span class='Voteable constant id'>Voteable</span><span class='colon2 op'>::</span><span class='Stats constant id'>Stats</span><span class='dot token'>.</span><span class='remake identifier id'>remake</span>
150
+ </pre>
151
+
137
152
  <h2>Credits</h2>
138
153
  <ul><li>
139
154
  <p>Alex N. - Author</p>
@@ -148,7 +163,7 @@ href="http://vinova.sg">vinova.sg</a>)</p>
148
163
  </div></div>
149
164
 
150
165
  <div id="footer">
151
- Generated on Wed Mar 30 11:06:26 2011 by
166
+ Generated on Wed Mar 30 22:06:27 2011 by
152
167
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
153
168
  0.6.5 (ruby-1.8.7).
154
169
  </div>
@@ -37,14 +37,38 @@
37
37
 
38
38
 
39
39
  <li class="r2 ">
40
- <span class='object_link'><a href="Mongoid/Voteable.html#down_votes_count-instance_method" title="Mongoid::Voteable#down_votes_count (method)">#down_votes_count</a></span>
40
+ <span class='object_link'><a href="Mongoid/Voteable/Stats.html#down_votes_count-instance_method" title="Mongoid::Voteable::Stats#down_votes_count (method)">#down_votes_count</a></span>
41
41
 
42
- <small>Mongoid::Voteable</small>
42
+ <small>Mongoid::Voteable::Stats</small>
43
+
44
+ </li>
45
+
46
+
47
+ <li class="r1 ">
48
+ <span class='object_link'><a href="Mongoid/Voteable/Stats.html#remake-class_method" title="Mongoid::Voteable::Stats.remake (method)">remake</a></span>
49
+
50
+ <small>Mongoid::Voteable::Stats</small>
51
+
52
+ </li>
53
+
54
+
55
+ <li class="r2 ">
56
+ <span class='object_link'><a href="Mongoid/Voteable/Stats.html#remake_stats-instance_method" title="Mongoid::Voteable::Stats#remake_stats (method)">#remake_stats</a></span>
57
+
58
+ <small>Mongoid::Voteable::Stats</small>
43
59
 
44
60
  </li>
45
61
 
46
62
 
47
63
  <li class="r1 ">
64
+ <span class='object_link'><a href="Mongoid/Voteable/Stats.html#remake_stats-class_method" title="Mongoid::Voteable::Stats.remake_stats (method)">remake_stats</a></span>
65
+
66
+ <small>Mongoid::Voteable::Stats</small>
67
+
68
+ </li>
69
+
70
+
71
+ <li class="r2 ">
48
72
  <span class='object_link'><a href="Mongoid/Voter.html#unvote-instance_method" title="Mongoid::Voter#unvote (method)">#unvote</a></span>
49
73
 
50
74
  <small>Mongoid::Voter</small>
@@ -52,7 +76,7 @@
52
76
  </li>
53
77
 
54
78
 
55
- <li class="r2 ">
79
+ <li class="r1 ">
56
80
  <span class='object_link'><a href="Mongoid/Voteable.html#up_voter_ids-instance_method" title="Mongoid::Voteable#up_voter_ids (method)">#up_voter_ids</a></span>
57
81
 
58
82
  <small>Mongoid::Voteable</small>
@@ -60,15 +84,31 @@
60
84
  </li>
61
85
 
62
86
 
87
+ <li class="r2 ">
88
+ <span class='object_link'><a href="Mongoid/Voteable/Stats.html#up_votes_count-instance_method" title="Mongoid::Voteable::Stats#up_votes_count (method)">#up_votes_count</a></span>
89
+
90
+ <small>Mongoid::Voteable::Stats</small>
91
+
92
+ </li>
93
+
94
+
63
95
  <li class="r1 ">
64
- <span class='object_link'><a href="Mongoid/Voteable.html#up_votes_count-instance_method" title="Mongoid::Voteable#up_votes_count (method)">#up_votes_count</a></span>
96
+ <span class='object_link'><a href="Mongoid/Voteable/Stats.html#update_parent_stats-class_method" title="Mongoid::Voteable::Stats.update_parent_stats (method)">update_parent_stats</a></span>
65
97
 
66
- <small>Mongoid::Voteable</small>
98
+ <small>Mongoid::Voteable::Stats</small>
67
99
 
68
100
  </li>
69
101
 
70
102
 
71
103
  <li class="r2 ">
104
+ <span class='object_link'><a href="Mongoid/Voteable/Stats.html#update_parent_stats-instance_method" title="Mongoid::Voteable::Stats#update_parent_stats (method)">#update_parent_stats</a></span>
105
+
106
+ <small>Mongoid::Voteable::Stats</small>
107
+
108
+ </li>
109
+
110
+
111
+ <li class="r1 ">
72
112
  <span class='object_link'><a href="Mongoid/Voteable.html#vote-instance_method" title="Mongoid::Voteable#vote (method)">#vote</a></span>
73
113
 
74
114
  <small>Mongoid::Voteable</small>
@@ -76,7 +116,7 @@
76
116
  </li>
77
117
 
78
118
 
79
- <li class="r1 ">
119
+ <li class="r2 ">
80
120
  <span class='object_link'><a href="Mongoid/Voter.html#vote-instance_method" title="Mongoid::Voter#vote (method)">#vote</a></span>
81
121
 
82
122
  <small>Mongoid::Voter</small>
@@ -84,6 +124,14 @@
84
124
  </li>
85
125
 
86
126
 
127
+ <li class="r1 ">
128
+ <span class='object_link'><a href="Mongoid/Voteable.html#vote_value-instance_method" title="Mongoid::Voteable#vote_value (method)">#vote_value</a></span>
129
+
130
+ <small>Mongoid::Voteable</small>
131
+
132
+ </li>
133
+
134
+
87
135
  <li class="r2 ">
88
136
  <span class='object_link'><a href="Mongoid/Voter.html#vote_value-instance_method" title="Mongoid::Voter#vote_value (method)">#vote_value</a></span>
89
137
 
@@ -93,7 +141,7 @@
93
141
 
94
142
 
95
143
  <li class="r1 ">
96
- <span class='object_link'><a href="Mongoid/Voteable.html#vote_value-instance_method" title="Mongoid::Voteable#vote_value (method)">#vote_value</a></span>
144
+ <span class='object_link'><a href="Mongoid/Voteable.html#voteable-instance_method" title="Mongoid::Voteable#voteable (method)">#voteable</a></span>
97
145
 
98
146
  <small>Mongoid::Voteable</small>
99
147
 
@@ -117,17 +165,17 @@
117
165
 
118
166
 
119
167
  <li class="r2 ">
120
- <span class='object_link'><a href="Mongoid/Voteable.html#votes_count-instance_method" title="Mongoid::Voteable#votes_count (method)">#votes_count</a></span>
168
+ <span class='object_link'><a href="Mongoid/Voteable/Stats.html#votes_count-instance_method" title="Mongoid::Voteable::Stats#votes_count (method)">#votes_count</a></span>
121
169
 
122
- <small>Mongoid::Voteable</small>
170
+ <small>Mongoid::Voteable::Stats</small>
123
171
 
124
172
  </li>
125
173
 
126
174
 
127
175
  <li class="r1 ">
128
- <span class='object_link'><a href="Mongoid/Voteable.html#votes_point-instance_method" title="Mongoid::Voteable#votes_point (method)">#votes_point</a></span>
176
+ <span class='object_link'><a href="Mongoid/Voteable/Stats.html#votes_point-instance_method" title="Mongoid::Voteable::Stats#votes_point (method)">#votes_point</a></span>
129
177
 
130
- <small>Mongoid::Voteable</small>
178
+ <small>Mongoid::Voteable::Stats</small>
131
179
 
132
180
  </li>
133
181
 
@@ -65,7 +65,7 @@
65
65
  <p class="children">
66
66
 
67
67
 
68
- <strong class="modules">Modules:</strong> <span class='object_link'><a href="Mongoid.html" title="Mongoid (module)">Mongoid</a></span>, <span class='object_link'><a href="VoteableMongoid.html" title="VoteableMongoid (module)">VoteableMongoid</a></span>
68
+ <strong class="modules">Modules:</strong> <span class='object_link'><a href="Mongoid.html" title="Mongoid (module)">Mongoid</a></span>, <span class='object_link'><a href="Rails.html" title="Rails (module)">Rails</a></span>, <span class='object_link'><a href="VoteableMongoid.html" title="VoteableMongoid (module)">VoteableMongoid</a></span>
69
69
 
70
70
 
71
71
 
@@ -79,7 +79,7 @@
79
79
  </div>
80
80
 
81
81
  <div id="footer">
82
- Generated on Wed Mar 30 11:06:27 2011 by
82
+ Generated on Wed Mar 30 22:06:28 2011 by
83
83
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
84
84
  0.6.5 (ruby-1.8.7).
85
85
  </div>
@@ -1,3 +1,3 @@
1
1
  module VoteableMongoid
2
- VERSION = '0.4.5'
2
+ VERSION = '0.5.0'
3
3
  end
@@ -3,13 +3,13 @@ module Mongoid
3
3
  extend ActiveSupport::Concern
4
4
 
5
5
  # How many points should be assigned for each up or down vote.
6
- # This hash should manipulated using Voteable.vote_point method
7
- VOTE_POINT = {}
6
+ # This hash should manipulated using voteable method
7
+ VOTEABLE = {}
8
8
 
9
9
  included do
10
10
  include Mongoid::Voteable::Stats
11
11
 
12
- def self.voteable_related
12
+ def self.voteable_data_only
13
13
  foreign_keys = relations.values.map{ |meta| meta.try(:foreign_key) }.compact
14
14
  only(foreign_keys + %w[voteable])
15
15
  end
@@ -18,11 +18,11 @@ module Mongoid
18
18
  #
19
19
  # @param [Hash] options a hash containings:
20
20
  #
21
- # vote_point self, :up => +1, :down => -3
22
- # vote_point Post, :up => +2, :down => -1, :update_counters => false
23
- def self.vote_point(klass = self, options = nil)
24
- VOTE_POINT[self.name] ||= {}
25
- VOTE_POINT[self.name][klass.name] ||= options
21
+ # voteable self, :up => +1, :down => -3
22
+ # voteable Post, :up => +2, :down => -1, :update_counters => false # skip counter update
23
+ def self.voteable(klass = self, options = nil)
24
+ VOTEABLE[self.name] ||= {}
25
+ VOTEABLE[self.name][klass.name] ||= options
26
26
  end
27
27
 
28
28
  # We usually need to show current_user his voting value on voteable object
@@ -49,8 +49,8 @@ module Mongoid
49
49
  voter_id = BSON::ObjectId(voter_id) if voter_id.is_a?(String)
50
50
 
51
51
  klass = options[:class]
52
- klass ||= VOTE_POINT.keys.include?(name) ? name : collection.name.classify
53
- value_point = VOTE_POINT[klass][klass]
52
+ klass ||= VOTEABLE.keys.include?(name) ? name : collection.name.classify
53
+ value_point = VOTEABLE[klass][klass]
54
54
 
55
55
  if options[:revote]
56
56
  if value == :up
@@ -146,10 +146,10 @@ module Mongoid
146
146
  update_result['n'] == 1 )
147
147
 
148
148
  if successed
149
- VOTE_POINT[klass].each do |class_name, value_point|
150
- # For other class in VOTE_POINT options, if is parent of current class
149
+ VOTEABLE[klass].each do |class_name, value_point|
150
+ # For other class in VOTEABLE options, if is parent of current class
151
151
  next unless relation_metadata = relations[class_name.underscore]
152
- next unless votee ||= options[:votee] || voteable_related.where(:id => options[:votee_id]).first
152
+ next unless votee ||= options[:votee] || voteable_data_only.where(:id => options[:votee_id]).first
153
153
  # If can find current votee foreign_key value for that class
154
154
  next unless foreign_key_value = votee.read_attribute(relation_metadata.foreign_key)
155
155
 
@@ -35,17 +35,18 @@ module Mongoid
35
35
  voteable.try(:[], 'votes_point') || 0
36
36
  end
37
37
 
38
+ # Re-generate vote counters and vote points
38
39
  def self.remake(log = false)
39
40
  remake_stats(log)
40
41
  update_parent_stats(log)
41
42
  end
42
43
 
43
44
  def self.remake_stats(log)
44
- Mongoid::Voteable::VOTE_POINT.each do |class_name, value_point|
45
+ Mongoid::Voteable::VOTEABLE.each do |class_name, value_point|
45
46
  klass = class_name.constantize
46
47
  klass_value_point = value_point[class_name]
47
48
  puts "Generating stats for #{class_name}" if log
48
- klass.voteable_related.each{ |doc|
49
+ klass.voteable_data_only.each{ |doc|
49
50
  doc.remake_stats(klass_value_point)
50
51
  }
51
52
  end
@@ -64,7 +65,7 @@ module Mongoid
64
65
  end
65
66
 
66
67
  def self.update_parent_stats(log)
67
- VOTE_POINT.each do |class_name, value_point|
68
+ VOTEABLE.each do |class_name, value_point|
68
69
  klass = class_name.constantize
69
70
  value_point.each do |parent_class_name, parent_value_point|
70
71
  relation_metadata = klass.relations[parent_class_name.underscore]
@@ -72,7 +73,7 @@ module Mongoid
72
73
  parent_class = parent_class_name.constantize
73
74
  foreign_key = relation_metadata.foreign_key
74
75
  puts "Updating stats for #{class_name} > #{parent_class_name}" if log
75
- klass.voteable_related.each{ |doc|
76
+ klass.voteable_data_only.each{ |doc|
76
77
  doc.update_parent_stats(parent_class, foreign_key, parent_value_point)
77
78
  }
78
79
  end
@@ -6,6 +6,6 @@ class Comment
6
6
 
7
7
  referenced_in :post
8
8
 
9
- vote_point self, :up => +1, :down => -3
10
- vote_point Post, :up => +2, :down => -1 #, :not_update_counters => true
9
+ voteable self, :up => +1, :down => -3
10
+ voteable Post, :up => +2, :down => -1 #, :not_update_counters => true
11
11
  end
@@ -2,7 +2,7 @@ class Post
2
2
  include Mongoid::Document
3
3
  include Mongoid::Voteable
4
4
 
5
- vote_point self, :up => +1, :down => -1
5
+ voteable self, :up => +1, :down => -1
6
6
 
7
7
  references_many :comments
8
8
  end
@@ -13,6 +13,7 @@ Gem::Specification.new do |s|
13
13
  s.description = %q{Add Up / Down Voting for Mongoid (built for speed by using one Mongodb update-in-place for each collection when provided enough information)}
14
14
 
15
15
  s.add_dependency 'mongoid', '~> 2.0.0'
16
+
16
17
  s.add_development_dependency 'rspec'
17
18
  s.add_development_dependency 'bson_ext'
18
19
  s.add_development_dependency 'watchr'
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: 5
4
+ hash: 11
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 4
9
8
  - 5
10
- version: 0.4.5
9
+ - 0
10
+ version: 0.5.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Alex Nguyen
@@ -92,10 +92,13 @@ files:
92
92
  - README.rdoc
93
93
  - Rakefile
94
94
  - TODO
95
- - VERSION
96
95
  - doc/Mongoid.html
97
96
  - doc/Mongoid/Voteable.html
97
+ - doc/Mongoid/Voteable/Stats.html
98
98
  - doc/Mongoid/Voter.html
99
+ - doc/Rails.html
100
+ - doc/Rails/VoteableMongoid.html
101
+ - doc/Rails/VoteableMongoid/Railtie.html
99
102
  - doc/VoteableMongoid.html
100
103
  - doc/_index.html
101
104
  - doc/class_list.html