レコードのcreated_at日付から60日を超える場合は、オファーモデルのレコードを消去する必要があります。
モデルにレーキタスクを設定する方法に関する情報しか見つかりませんでしたが、レコードを削除するためのレーキタスクを作成する方法に関する情報は見つかりませんでした。だから私はこれをタスクでやらなければならないのか、それともrailsがこれを行うために何か他のものを持っているのか疑問に思います。
レコードのcreated_at日付から60日を超える場合は、オファーモデルのレコードを消去する必要があります。
モデルにレーキタスクを設定する方法に関する情報しか見つかりませんでしたが、レコードを削除するためのレーキタスクを作成する方法に関する情報は見つかりませんでした。だから私はこれをタスクでやらなければならないのか、それともrailsがこれを行うために何か他のものを持っているのか疑問に思います。
タスク用のファイルを作成します。
# 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 の詳細をご覧ください。
期限切れの offer を削除する rake タスクを作成するか、offers モデルのクラス メソッドを作成して、everything gem などを使用して呼び出すことができます。