我有一组位于产品对象内部的历史项目:
class Product
include Mongoid::Document
include Mongoid::Paranoia
include Mongoid::Timestamps
...
embeds_many :modification_histories
我的商业规则是只保存最后 120 条历史记录。因此,当添加新的时,我对旧的进行排序并弹出数组:
if self.modification_histories.size >= 120
self.modification_histories.sort! { |x,y| y.date <=> x.date }
while self.modification_histories.size >= 120
self.modification_histories.pop
end
end
这似乎工作正常,我在调用该方法后放置了一个断点,并且历史数组的大小正确。但是当我保存对象 ( self.save!
) 然后重新加载它时,历史数组并没有改变。我看不出我做错了什么。
gem "mongoid", "~> 2.4"