0
我有一個標準的計數器緩存設置在庫上來跟蹤它的照片。計數器緩存命名爲每個Rails默認值photos_count
。計數器緩存奇怪的行爲規範
在我的畫廊規範我試計數器緩存是這樣的:
it "updates 'photos_count' counter cache" do
gallery = create(:gallery_with_photos, with_photos_count: 3)
gallery.reload # Fails without this
expect(gallery.photos_count).to eq 3
expect {
gallery.photos.first.destroy
gallery.reload # Fails without this
}.to change{ gallery.photos_count }.by(-1)
gallery.photos << create(:photo)
expect {
gallery.save!
gallery.reload # Fails without this
}.to change { gallery.photos_count }.by(1)
end
這工作,但只與調用gallery.reload
。爲什麼此規範在沒有reload
的調用的情況下會失敗。每次失敗都是因爲photos_count
中沒有變化。
說明with_photos_count
是工廠使用的瞬態屬性。
是的,我讀過這個問題,但沒有在他的回答的第二部分沒有用reload'的'。 – Undistraction
區別在於,在另一個示例中,計數通過'User.last.media_count'檢索,這會強制執行另一個查詢。你的例子在'gallery'實例中測試緩存的值。 – zetetic