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

时间:2013-10-07 19:08:50

标签: ruby-on-rails ruby activerecord

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

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

2 个答案:

答案 0 :(得分:5)

使用#count代替#size

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

答案 1 :(得分:0)

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

def asdf
  codes(true).size
end