2014-02-18 63 views
0

假設我有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)中,但我認爲它更糟糕,因爲它會爲用戶提供額外的查詢。

我想念一些明顯的東西嗎?你有什麼經驗?

回答

0

我想你必須在User模型中使用has_many :comments, autosave: true