2012-02-01 3 views
0

Попытка использования before_save в моей модели Post, а затем регулярное выражение для замены всего, что похоже на электронную почту со словом «запрещено». Это сокращение спама из комментариев/сообщений, созданных пользователями в дискуссионной доске.Удаление адреса электронной почты с использованием Regex и Before_Save

В настоящее время это дает мне синтаксическую ошибку; но я уверен, что это больше? Как это исправить?

post.rb

before_save :remove_emails 

    # Prevents and replaces any emails or URLs posted by user as <forbidden> 
    def remove_emails 
    self.post = post.gsub^(((ht|f)tp(s?))\://)?(www.|[a-zA-Z].)[a-zA-Z0-9\-\.]+\.(com|edu|gov|mil|net|org|biz|info|name|museum|us|ca|uk)(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\;\?\'\\\+&amp;%\$#\=~_\-]+))*$, "forbidden") 
    end 

ответ

2

Согласно doc,

  1. Там нет gsub^ функции. Вы должны использовать gsub или gsub!
  2. Pattern (первый параметр) должен быть окруженным '/' (слэш)
1

удалить^сразу после GSUB.

+0

все еще бросает синтаксические ошибки .. = [Я думаю, что это связано с фактическим форматированием кода Ruby, я подозреваю? –

1

С некоторыми изменениями на Regexp вывешенные в this question, вы можете попробовать:

# Prevents and replaces any emails or URLs posted by user as <forbidden> 
def remove_emails 
    self.post.gsub!(/(http|https):\/\/[a-z0-9-\.]+([\-\.]{1}[a-z0-9-\.]+)*[a-z]{2,5}\S*/i, 'forbidden') 
end 
Смежные вопросы