0

我们正在使用 Rails 3.2.5

这是我们正在使用的代码:

class MR < ActiveRecord::Base
  has_many :codes

  def test
    codes.each { |c| c.delete }
  end

  def asdf
    codes.size
  end
end

如果我这样称呼:

mr = MR.create 
# imagine mr has 5 codes
mr.test
# confirmed that 5 codes have been deleted from database using Sequel Pro
mr.asdf => 5
mr.reload.asdf => 0

删除其中的对象时,我是否总是需要重新加载关联?我应该使用其他方法吗?我认为破坏会做到这一点,但它不能解决问题。

4

2 回答 2

5

使用#count代替#size

#size缓存值。#count每次运行查询。

于 2013-10-07T19:17:52.953 回答
0

您可以直接从数据库中获取数据。而不是缓存

def asdf
  codes(true).size
end
于 2013-10-07T19:17:05.067 回答