我有一个模型(User),它与另一个模型(Resource)有一个has_many关系。将为用户生成大量相关资源,但我只希望存储最新的X记录。
有没有比这更简洁的方式:
加载给定用户的所有资源
如果资源== X,则删除第一个
添加新记录。
TIA,
亚当
答案 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
也许不是最漂亮的破坏方法,但它会给你一个想法。