使用rails 3中的gem时实现调度程序任务

时间:2011-07-11 08:42:01

标签: ruby-on-rails

我正在尝试实施一个调度程序任务,删除用户表中被滥用超过5次的用户。为了在user.rb文件中实现这一点,我返回了一个方法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

这就是我在Scheduler.rb文件中编写的内容

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

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

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

我每2分钟面临一个问题如下我的日志被清除但是我在模型中编写的方法没有被调用我想这个功能没有被触发。我搜索了所有的网页并检查了每一种可能的方式。我无法弄清楚问题是什么。

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

1 个答案:

答案 0 :(得分:1)

您已将report_abuse_delete定义为正常 - 即实例 - 方法,但您将其称为方法。尝试将方法定义为def self.report_abuse_delete

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