0
我有一個類中查找一個實例是昂貴的,所以實例緩存:如何在Rails.cache中放置(部分)大對象圖?
class Foo
def self.find(id)
Rails.cache.fetch("Foo.#{id}") do
// some expensive lookup, like an HTTParty request, or a long SQL query
...
end
end
end
這工作正常,直到Foo
■找相關Foo
S:
class Foo
def children
@child_foo_ids.map { |id| Foo.find(id) }
end
end
我想使用||=
緩存來保存多次往返:
class Foo
def children
@children ||= @child_foo_ids.map { |id| Foo.find(id) }
end
end
但Rails.cache
凍結日e找到Foo
s,所以在創建和緩存對象後我無法設置實例變量。 (即該方法提出了一個TypeError
)
一個解決辦法是預先取得的parent
當我第一次做昂貴的發現,但最終可能會加載巨大對象圖時,我只想要一個或兩個實例。