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

関連付け内のオブジェクトを削除する場合、常に関連付けを再読み込みする必要がありますか? 私が使用すべき別の方法はありますか?destroy で済むと思いましたが、問題は解決しません。

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 に答える