所以...我有3個模型。總結在一起counter_caches
class Foo < ActiveRecord::Base
has_many :bars
end
class Bar < ActiveRecord::Base
belongs_to :foo
has_many :bazs
end
class Baz < ActiveRecord::Base
belongs_to :bar, counter_cache: true
end
所以,我想,而不是.size
我美孚其行爲類似bars_count
,但我想補充Bar
的bazs_count
一起列。我是否必須在此處進行手動操作,使用before_save
還是什麼? Rails中是否有這個功能?
所以,如果有2個酒吧... 1有一個bazs_count = 4
,另一個與bazs_count = 8
。如果這兩個條都屬於foo,則只要bazs_count
發生更改,我就想要bars_count = 12
。
原因......我經常會檢查一個特定的foo有多少個bazs,我想保持最小的查詢。
不,你不得不自己手動做這個。 –
k ...所以當'counter_cache'更新吧時,它實際上並沒有保存,所以我的Bar'after_save'調用不會觸發。如果我之後'Bar.find(1).save',那麼它會正確更新Foo。應該如何觸發? – Dudo