假設我有User
模型和Comment
模型belongs_to :user
軌道4緩存和belongs_to的關係
我明白做什麼,當我要緩存用戶頁面(通過「俄羅斯套娃緩存」)中列出的意見 - 我做全球cache
塊用於整個用戶視圖,並將每個用戶的評論放入許多緩存塊中,併爲belongs_to :user
關聯添加touch: true
。所以,當一些評論發生變化時,只有2個緩存需要更新 - 針對該評論以及該用戶。
但現在我需要緩存,看起來像評論觀點:
= comment.user.name
= comment.text
因此,我們需要更新緩存,不僅在此評論改變,但是當用戶名稱已更改。什麼是更合適的方式來做到這一點?
我目前的解決方案是在保存對用戶的回調後,使得comment.update_all(updated_at: updated_at)
和包裝視圖在cache(comment)
區塊中。但我不喜歡它,因爲我只想檢測一些字段的變化。
另一種解決方案是將視圖封裝在cache(comment, comment.user)
中,但我認爲它更糟糕,因爲它會爲用戶提供額外的查詢。
我想念一些明顯的東西嗎?你有什麼經驗?