2011-07-11 20 views
0

私は5回以上虐待を受けたユーザテーブルのユーザを削除するスケジューラタスクを実装しようとしています。これをuser.rbファイルで実現するには、report_abuse_deleteメソッドのメソッドを返します。このメソッドは、悪用されたユーザーを5回以上見つけてデータベースからレコードを削除する機能を実行します。あなたはscheduler.rbファイルでIを見ることができるようにgem in railsを使ってスケジュールタスクを実装する3

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

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

ファイル

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で書かれたものである:ここでは

は、Userモデルの私の方法であり、 2つの関数を実行しようとすると2分ごとにログがクリアされ、モデルに書き込んだreport_abuse_deleteメソッドを実行しようとしています。

2分ごとにログがクリアされていますが、私がモデルに書き込んだメソッドは呼び出されないので、機能が起動していないようです。私はすべてのウェブを検索し、すべての可能な方法をチェックしました。私は問題が何かを理解することができません。

お願いします。あらゆる種類の援助は歓迎されており、かなりの価値があります。

答えて

1

あなたは通常通りreport_abuse_deleteを定義しました - それはインスタンスある - 方法がありますが、クラスメソッドとしてそれを呼んでいます。メソッドをdef self.report_abuse_deleteと定義してみてください。

renderコールが動作するかどうかわかりません:この宝石は使用していませんが、テキストを表示するためのユーザーエージェントはありません。それができると期待しています。

+0

ありがとうChowlett。その働き。 – Sam

+0

心配はいりません。ここの最初の良い質問!あなたは、この回答があなたにアップ投票をしてくれたことを示すことができます(上矢印をクリックしてください)。空のチェックマークをクリックすることで、正しいものとして受け入れることもできます。 – Chowlett

関連する問題