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.
- data/README.rdoc +15 -4
- data/TODO +0 -1
- data/doc/Mongoid.html +3 -3
- data/doc/Mongoid/Voteable.html +54 -240
- data/doc/Mongoid/Voteable/Stats.html +733 -0
- data/doc/Mongoid/Voter.html +7 -7
- data/doc/Rails.html +101 -0
- data/doc/Rails/VoteableMongoid.html +101 -0
- data/doc/Rails/VoteableMongoid/Railtie.html +110 -0
- data/doc/VoteableMongoid.html +2 -2
- data/doc/_index.html +43 -1
- data/doc/class_list.html +1 -1
- data/doc/file.README.html +21 -6
- data/doc/index.html +21 -6
- data/doc/method_list.html +59 -11
- data/doc/top-level-namespace.html +2 -2
- data/lib/voteable_mongoid/version.rb +1 -1
- data/lib/voteable_mongoid/voteable.rb +13 -13
- data/lib/voteable_mongoid/voteable/stats.rb +5 -4
- data/spec/models/comment.rb +2 -2
- data/spec/models/post.rb +1 -1
- data/voteable_mongoid.gemspec +1 -0
- metadata +7 -4
- data/VERSION +0 -0
data/doc/class_list.html
CHANGED
@@ -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> < 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>
|
data/doc/file.README.html
CHANGED
@@ -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
|
51
|
-
|
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='
|
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'>></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'>></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='
|
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'>></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'>></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='
|
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'>></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'>></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
|
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>
|
data/doc/index.html
CHANGED
@@ -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
|
51
|
-
|
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='
|
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'>></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'>></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='
|
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'>></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'>></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='
|
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'>></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'>></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
|
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>
|
data/doc/method_list.html
CHANGED
@@ -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="
|
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#
|
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="
|
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#
|
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
|
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>
|
@@ -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
|
7
|
-
|
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.
|
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
|
-
#
|
22
|
-
#
|
23
|
-
def self.
|
24
|
-
|
25
|
-
|
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 ||=
|
53
|
-
value_point =
|
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
|
-
|
150
|
-
# For other class in
|
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] ||
|
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::
|
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.
|
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
|
-
|
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.
|
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
|
data/spec/models/comment.rb
CHANGED
@@ -6,6 +6,6 @@ class Comment
|
|
6
6
|
|
7
7
|
referenced_in :post
|
8
8
|
|
9
|
-
|
10
|
-
|
9
|
+
voteable self, :up => +1, :down => -3
|
10
|
+
voteable Post, :up => +2, :down => -1 #, :not_update_counters => true
|
11
11
|
end
|
data/spec/models/post.rb
CHANGED
data/voteable_mongoid.gemspec
CHANGED
@@ -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:
|
4
|
+
hash: 11
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
- 4
|
9
8
|
- 5
|
10
|
-
|
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
|