繁体   English   中英

使用rails 3中的任何时候gem实现计划任务

[英]Implementing a schedular task using whenever gem in rails 3

我正在尝试实现一个调度程序任务,该任务删除用户表中被滥用超过 5 次的用户。 为了在 user.rb 文件中实现这一点,我返回了一个方法 report_abuse_delete 方法,该方法执行查找滥用超过 5 次的用户并从数据库中删除他的记录的功能。

这是我在用户 model 中的方法:

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

这就是我在 Scheduler.rb 文件中所写的

every 2.minutes do
   rake "log:clear", :environment => "development"

   runner "User.report_abuse_delete", :environment => "development"
end

正如您在 scheduler.rb 文件中看到的那样,我正在尝试执行 2 个功能,其中一个是每 2 分钟清除一次日志并尝试运行我在 model 中编写的方法 report_abuse_delete。

我每 2 分钟就会遇到如下问题,我的日志被清除,但是我在 model 中编写的方法没有被调用,我猜这个功能没有被触发。 我已经搜索了所有 web 并检查了所有可能的方式。 我无法弄清楚问题出在哪里。

请帮帮我。 任何形式的帮助都是值得欢迎和赞赏的。

您已将report_abuse_delete定义为普通(即实例)方法,但您将其称为class方法。 尝试将方法定义为def self.report_abuse_delete

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM