7

レコードのcreated_at日付から60日を超える場合は、オファーモデルのレコードを消去する必要があります。

モデルにレーキタスクを設定する方法に関する情報しか見つかりませんでしたが、レコードを削除するためのレーキタスクを作成する方法に関する情報は見つかりませんでした。だから私はこれをタスクでやらなければならないのか、それともrailsがこれを行うために何か他のものを持っているのか疑問に思います。

4

4 に答える 4

20

タスク用のファイルを作成します。

# lib/tasks/delete_old_records.rake
namespace :delete do
  desc 'Delete records older than 60 days'
  task :old_records => :environment do
    Model.where('created_at < ?', 60.days.ago).each do |model|
      model.destroy
    end

    # or Model.delete_all('created_at < ?', 60.days.ago) if you don't need callbacks
  end
end

実行:

RAILS_ENV=production rake delete:old_records

cron で実行するようにスケジュールします (この例では毎日午前 8 時に):

0 8 * * * /bin/bash -l -c 'cd /my/project/releases/current && RAILS_ENV=production rake delete:old_records 2>&1'

when gem を使用して、デプロイ時に crontab を作成および管理することもできます。

every 1.day, :at => '8:00 am' do
  rake "delete:old_records"
end

Githubで gem の詳細をご覧ください。

于 2012-12-20T15:34:07.260 に答える
4

期限切れの offer を削除する rake タスクを作成するか、offers モデルのクラス メソッドを作成して、everything gem などを使用して呼び出すことができます。

于 2012-12-20T15:33:24.577 に答える