删除对象不会更新内存中已有的关联



我们正在使用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

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

使用 #count 而不是 #size

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

您可以

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

def asdf
  codes(true).size
end

最新更新