在rails 3中使用每当gem实现一个定时任务



我试图实现一个调度器任务,删除用户表中被滥用超过5次的用户。在用户中实现这一点。我已经返回了一个方法report_abuse_delete方法,该方法执行查找滥用超过5次的用户的功能,并从数据库中删除他的记录。

这是我在用户模型中的方法:

def report_abuse_delete
@delete_abused_user= Abuse.find(:all, :conditions=>['count>=?',5])
 @delete_abused_user.each do |d|
    @abused_user= User.find(d.abuse_id)
      if  @abused_user.delete
         render :text=> "User account has been deleted. Reason: This user has been reported spam for more than 5 times"
        UserMailer.user_delete_five_spam_report(@user).deliver
      end
 end
end

这是我在调度程序中写的。rb文件

every 2.minutes do
   rake "log:clear", :environment => "development"
   runner "User.report_abuse_delete", :environment => "development"
end

您可以在调度程序中看到。我试图执行2个功能,一个是每2分钟清理我的日志,并试图运行我在模型中编写的report_abuse_delete方法。

我面临的问题如下每2分钟我的日志被清除,但我在模型中编写的方法没有被调用,我猜功能没有被触发。我已经在网上搜索了所有可能的方法。我不知道问题出在哪里。

请帮帮我。任何形式的帮助都是受欢迎的。

您已经将report_abuse_delete定义为普通(即实例)方法,但是您将其作为方法调用。尝试将方法定义为def self.report_abuse_delete

另外,我不知道render调用是否会起作用:我没有使用过这个宝石,但是因为你没有任何类型的用户代理来查看文本,我不确定你会期望它做什么。

最新更新