Auto usuwanie rekordów z tabeli

Witam,

Zastanawiam się jak rozwiązać problem podany w temacie. Chodzi mi o to, żeby z tabeli zostały usuwane rekordy starsze niż 5 dni.

YourTrickyModel.delete_all(:conditions => ["created_at > ?", 5.days.ago])

uruchamiane z crona.
Mozna pewnie ladniej z jakimis named_scope

Użyj crona i niech on wywołuje co jakiś czas coś w stylu ./script/rails runner 'Somethig.delete(:conditions => ["created_at < ?", Time.now - 5.days])'
(Sam sprawdź jaka dokładnie jest składnia polecenia usuwania)

Alternatywnie, zamiast crona, możesz przygotować takie usuwanie jako wynik jakiejś akcji - albo specjalnie do tego celu stworzonej (“POST /cleaning?yes”), albo przy okazji jakiejś innej czynności - tylko nie wybieraj do tego celu akcji, która jest wywoływana często, żeby jej niepotrzebnie nie spowalniać.

Najczystszą metodą (moim skromnym zdaniem) jest chyba przygotowanie skryptu z tym poleceniem usuwania i odpalanie runnera z crona: 0 6 * * * cd /src/app && ./script/rails runner script/cleaning.rb

odpowiedzią jest gem whenever

A do obsługi crona najlepiej użyć: http://github.com/javan/whenever, żeby wszystko siedziało w aplikacji.

WOW! 3 odpowiedzi w ciagu 30 sekund! Jesteśmy zajeb… community :slight_smile:

Raczej community nolife’ów :wink:

To gdyby to się działo w piątek wieczorem ;]