我对Fragment Caching的问题是,我需要执行俄罗斯娃娃缓存,这是在Rails中实现的,反之亦然。
class Bundle < ActiveRecord::Base
has_many :products
end
class Product < ActiveRecord::Base
#name: string
belongs_to :product_type
end
class ProductType < ActiveRecord::Base
#description: string
end
<!--- views/bundles/show.html.haml >
%table
%tbody
= render @bundle.products
<!--- views/products/_product.html.haml >
- cache [product] do
%tr
%td= product.name
- cache [product.product_type] do
%td= product.product_type.description
如您所见,当我更新ProductType
的描述时,缓存不会刷新。据我所知,touch: true
选项只能应用于belongs_to
关系,并且会覆盖product.product_type
的缓存,因为缓存首先访问product
。
是否有一个很好的解决方案,或者当Products
更改时,我最终是否需要更新所有相应的ProductType
?