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.
- 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
|