Найти все старые записи, возвращающие одинаковую сумму больше и меньше (> <) - PullRequest
4 голосов
/ 26 января 2012

Я пытаюсь найти (а затем удалить) все старые записи в моей БД на героку.

По некоторым причинам эти два равны (обратите внимание, <и>)

Post.find(:all, "updated_at > ?", 30.days.ago).count
Post.find(:all, "updated_at < ?", 30.days.ago).count

заставляет меня сомневаться в использовании удаления.

Как мне позвонить, чтобы получить только старые записи?

Ответы [ 5 ]

12 голосов
/ 26 января 2012

Остальные ответы верны, но для обновленного синтаксиса ActiveRecord:

Post.where("updated_at < ?", 30.days.ago)
11 голосов
/ 26 января 2012

Меньше, чем нужно:

Post.find(:all, :conditions => ["updated_at < ?", 30.days.ago])

Если вы не уверены, распечатайте некоторые записи на консоли, используя p или awesome_print (ap).

3 голосов
/ 26 января 2012

Вам необходимо указать условие where с помощью: условий, например:

Post.all(:conditions => ["updated_at < ?", 30.days.ago])
2 голосов
/ 26 января 2012

Если вы хотите удалить старые записи, вы хотите удалить записи, которые имеют более раннюю дату, т.е. меньше , чем указанная дата (30.days.ago)

0 голосов
/ 26 января 2012

Вместо удаления записей, почему бы вам не установить флаг state на pending_delete, а затем, как только вы будете удовлетворены, вы можете удалить все записи в этом состоянии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...