Я не использовал rakisment
, но выполнение какой-либо предварительной обработки для действия замедлит его, а в случае с вашим фильтром спама это будет замедляться все больше и больше, поскольку все больше индикаторов спама включается в rakismet
словарь.
Я бы порекомендовал двухэтапный процесс:
- В
before_create
сделайте минимальную проверку на спам, чтобы поймать очень очевидные. Вы можете искать слова («виагра», «сиалис», «долг» и т. Д.), А также проверять, не слишком ли быстро отправляет много комментариев. Это будет довольно быстро и не сильно замедлит работу вашего приложения.
- В Задержанном задании (Одна из наиболее известных библиотек фоновой обработки для Ruby) запустите проверки rakismet. Они могут удалить / пометить комментарии после факта.
Это решение немедленно ограничивает явный спам и в конечном итоге использует возможности rakismet
для полной очистки комментариев, не вызывая чрезмерной нагрузки или замедления работы системы.
Одним из преимуществ этого подхода является то, что чрезвычайно легко масштабировать процессы отложенного задания, но просто запускать больше работников на одном (или разных) серверах. Это означает, что ваше основное приложение не будет сканироваться, поскольку тяжелая работа была загружена для нескольких экземпляров рабочего процесса.