2
鑑於以下的ActiveRecord模型:ActiveRecord的:緩存和自動更新(冗餘)屬性 - 最佳實踐
class Tree < ActiveRecord::Base
# attributes: title, price, some_date
has_many :nodes
end
class Node < ActiveRecord::Base
# attributes: title, price, some_date
belongs_to :tree
end
一棵樹有許多節點(1'000 - 2'000)。 出於性能和其他原因,我想緩存Node實例中的price屬性。節點應該始終具有與其關聯樹相同的價格。這將使計算和查詢變得更加簡單快捷。
有沒有關於如何做到這一點的最佳做法?甚至可能是插件?
我想出到目前爲止是:
class Tree
after_save do; nodes.each{|n| n.update_attribute :price, price} if price_changed?; end
end
這可以成爲一個有點麻煩加班,因爲我需要很多這樣的緩存的屬性。