Use counter caches to improve spam scoring
authorTom Hughes <tom@compton.nu>
Mon, 12 Nov 2012 09:39:44 +0000 (09:39 +0000)
committerTom Hughes <tom@compton.nu>
Mon, 12 Nov 2012 09:39:44 +0000 (09:39 +0000)
Now that we have the counter caches we can take all edits and traces
into account without incurring the cost of having to scan the database
to count them all.

app/models/user.rb

index 3b43130faee924f5fdd5293eca3214318b56040d..6ea4de9be6ba92f8f5b7b3f4652ca182163abd9f 100644 (file)
@@ -207,8 +207,8 @@ class User < ActiveRecord::Base
   ##
   # return a spam score for a user
   def spam_score
-    changeset_score = self.changesets.limit(10).length * 50
-    trace_score = self.traces.limit(10).length * 50
+    changeset_score = self.changesets.size * 50
+    trace_score = self.traces.size * 50
     diary_entry_score = self.diary_entries.inject(0) { |s,e| s += e.body.spam_score }
     diary_comment_score = self.diary_comments.inject(0) { |s,c| s += c.body.spam_score }