2011-07-11 54 views
0

我試圖實現一個調度程序任務,該任務刪除用戶表中濫用超過5次的用戶。爲了在user.rb文件中實現此目的,我返回了一個report_abuse_delete方法,該方法執行查找濫用超過5次的用戶並從數據庫中刪除其記錄的功能。使用任何時候使用gem in rails 3來實現調度任務

這裏是我的用戶模型的方法:

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

您已經定義report_abuse_delete作爲一個正常的 - 這是實例 - 方法,但你調用它作爲一個方法。嘗試將方法定義爲def self.report_abuse_delete

此外,我不知道render調用是否可以正常工作:我沒有使用過這個gem,但由於您沒有任何類型的用戶代理來查看文本,所以我不確定您我希望它能做到。

+0

謝謝Chowlett。它的工作。 – Sam

+0

不用擔心。這裏第一個好問題!記住你可以表明這個答案通過增加投票來幫助你(點擊向上箭頭);您也可以通過點擊空的複選標記來接受它。 – Chowlett