]> git.openstreetmap.org Git - rails.git/blobdiff - app/models/spam_observer.rb
Suspend users if their spam score gets too high
[rails.git] / app / models / spam_observer.rb
diff --git a/app/models/spam_observer.rb b/app/models/spam_observer.rb
new file mode 100644 (file)
index 0000000..21561f6
--- /dev/null
@@ -0,0 +1,15 @@
+class SpamObserver < ActiveRecord::Observer
+  observe User, DiaryEntry, DiaryComment
+
+  def after_save(record)
+    case
+    when record.is_a?(User): user = record
+    when record.is_a?(DiaryEntry): user = record.user
+    when record.is_a?(DiaryComment): user = record.user
+    end
+
+    if user.status == "active" and user.spam_score > APP_CONFIG['spam_threshold']
+      user.update_attributes(:status => "suspended")
+    end
+  end
+end