Хранить только X самых последних записей - PullRequest
0 голосов
/ 31 марта 2011

У меня есть модель (Пользователь), которая имеет отношение has_many к другой модели (Ресурс). Для пользователя будет создано значительное количество связанных ресурсов, но я хочу хранить только самые последние X записей.

Есть ли более аккуратный способ сделать это, чем:

  1. Загрузить все ресурсы для данного пользователя

  2. Если ресурсы == X, то удалить первый

  3. Добавить новую запись.

ТИА

Адам

1 Ответ

0 голосов
/ 31 марта 2011

Использовать обратный вызов after_create для удаления других записей?

class Resource < ActiveRecord::Base

  KEEP_RECORDS = 8
  after_create :trim_similar

  private

  def trim_similar
    self.class.where(:user_id => self.user_id).offset(KEEP_RECORDS).each { |r| r.destroy }
  end
end

Возможно, не самый красивый метод уничтожения, но он дает вам идею.

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