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

jz9*_*999 0 ruby activerecord ruby-on-rails

我们正在使用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
Run Code Online (Sandbox Code Playgroud)

如果我这样称呼:

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
Run Code Online (Sandbox Code Playgroud)

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

Ism*_*reu 5

#count而不是#size

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