0

gem「いつでも」を使用して、一定期間(6か月)後にレコードのクリーンアップを試みました。

私のいつでもスケジューラーで:

every 1.month, at: '1am' do
  rake 'lib/tasks/cleanup_user.rake'
end

lib/tasks/cleanup_user.rake で

@user = User.all.where(:created_at > 'Time.6.month.ago').delete

ほぼ正しいようです。ただし、「初期化されていない定数ユーザー」というエラーが発生しました。私はレールに比較的慣れていません。助けてください。

編集:クリーンな1行コマンドを実行してゲームを変更しました:

set :output, "log/cron.log"
    every 1.minutes, :environment => :development do
      command 'User.where("confirmed = 0 AND created_at <= ?", 6.months.ago).delete'
    end

特定の環境を設定し、これをコマンドで実行します。

whenever --set environment=development --update-crontab userscleaning

crontab で確認しましたが、まだ機能していません。何か考えはありますか?

4

2 に答える 2

0

environmentタスクに依存関係を追加してみてください。

task :cleanup_users => :environment do
  User.where(:created_at > 'Time.6.month.ago').delete_all
end

コールバックをトリガーする場合は、使用しますdestroy_all

task :cleanup_users => :environment do
  User.where(:created_at > 'Time.6.month.ago').destroy_all
end

ここに関連するRailscastsがあります。

于 2013-03-31T06:15:03.927 に答える