voteable_mongoid 0.4.5 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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