Вам не нужно перенаправлять на страницу удаления, чтобы удалить элемент. А прежде чем фильтр может работать.
# application_controller.rb
def destroy_when_cookie_is_nil
some_record.destroy if cookies[:time].nil?
end
# some controller
before_filter :destroy_when_cookie_is_nil
Однако удаление записи, основанной на истечении срока действия куки, не кажется мне хорошим решением. Если вы хотите удалить запись через 5 дней, я настоятельно рекомендую не использовать файлы cookie, а добавить в вашу модель столбец expires_at
datetime. Вы можете установить этот столбец автоматически с помощью обратного вызова.
# in model
before_create :set_expiration
def set_expiration
self.expires_at = 5.days.from_now
end
Затем вы можете добавить именованную область в модель, чтобы получить записи с истекшим сроком действия.
# in model
named_scope :active, lambda { {:conditions => ["expires_at IS NULL OR expires_at >=", Time.zone.now]} }
Затем вы можете позвонить Item.active
, чтобы отобразить только не просроченные записи. Если вы хотите убедиться, что они удалены из базы данных, настройте задачу cron, чтобы найти все просроченные записи и удалить их.