仅存储X个最近的条目

时间:2011-03-31 15:07:51

标签: ruby-on-rails activerecord

我有一个模型(User),它与另一个模型(Resource)有一个has_many关系。将为用户生成大量相关资源,但我只希望存储最新的X记录。

有没有比这更简洁的方式:

  1. 加载给定用户的所有资源

  2. 如果资源== X,则删除第一个

  3. 添加新记录。

  4. TIA,

    亚当

1 个答案:

答案 0 :(得分:0)

使用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

也许不是最漂亮的破坏方法,但它会给你一个想法。