的更新特定的緩存計數器我有兩個簡單的模型:如何以及在哪裏關聯模型
class Offer < ActiveRecord::Base
belongs_to :offer_category
scope :visible, -> { where(visible: true) }
end
class OfferCategory < ActiveRecord::Base
has_many :offers
def recount_visible_offers
self.visible_offers_counter = offers.visible.count
save
end
end
我想緩存在每個類別中可見的報價數量。由於我只想計數可見報價,因此我無法使用Rails counter_cache。爲此,我在OfferCategory
上提出了一個方法recount_visible_offers
,它可以計算並保存我想要的內容。但是現在我被困在何處以及如何調用它。
使用的方法需要處理這些
- 新的報價與屬性可見創建的計數器=真
- 優惠更改類別
現在它使用after_save和afte處理r_destroy在相關類別實例上調用recount_visible_offers
的回調,但考慮到上述所有情況,它相當複雜且容易出錯。另一件事是測試更難。
所以我想改變它以某種方式更簡單。我有一個想法:
在OfferCategory
上介紹方法self.recount_visible_offers
,該方法在任何時候重新計算所有類別中的所有計數器(通過再次回調)。我知道它非常強大,但它更簡單,我在考慮在性能問題到來時處理,而不是現在創建或更改新產品的頻率不是很高,而且其中也不是很多。
另一種方式可能是我正在調查的觸摸或關聯回調。
任何建議將不勝感激。提前致謝。
獎金的問題:
你會在哪裏測試基於賣價漲跌類股獲正確敘述?我不確定它屬於單元測試,因爲它涉及2個類一起工作。另一方面,功能測試似乎太重,因爲我想測試以上所有情況。
類似的東西是我們的第一個鏡頭..問題是內改變類 - 它不更新舊的 – masa331
啊 - 我看到:我會修改我的答案。 –