Raisで実行する次のタスクがあります。
require 'net/http'
namespace :seed do
task :set_gid_on_histories => :environment do
History.all.each do |hist|
if hist.channel != "REMOTE"
if hist.guest
guest = Guest.find(hist.user_group_id)
hist.update_attributes(:group_id => guest.group_id)
else
ug = UserGroup.with_deleted.find(hist.user_group_id)
hist.update_attributes(:group_id => ug.group_id)
end
end
end
end
end
問題はラインで発生します
ug = UserGroup.with_deleted.find(hist.user_group_id)
何が起こるかというと、それは投げているということです
ActiveRecord::RecordNotFound: 'id'=71 の UserGroup が見つかりません [WHERE "user_groups"."deleted_at" IS NULL]
コマンドラインに「with deleted」がなかったかのように。
Railsコンソールで同じコマンドを入力しようとしましたが、うまくいきました。つまり、 ug = UserGroup.with_deleted.find(71) を実行すると、問題なく動作し、削除されたユーザーが見つかります。
それで、paranoia の 'with_deleted' コマンドが Rails タスクで機能していないようです...何か不足していますか?