尝试在我的Post模型中使用before_save然后使用正则表达式替换任何看起来像电子邮件的单词'forbidden'。这是为了减少用户在讨论区中创建的评论/帖子中的垃圾邮件。
它目前给我一个语法错误;但我相信它不止于此?我该如何解决?
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\.\,\;\?\'\\\+&%\$#\=~_\-]+))*$, "forbidden")
end
答案 0 :(得分:2)
根据doc,
gsub^
功能。您必须使用gsub
或gsub!
答案 1 :(得分:1)
在gsub之后删除^。
答案 2 :(得分:1)
对this question中发布的Regexp进行一些调整后,您可以尝试:
# 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