我有以下型号:
class User < ActiveRecord::Base
def stripe_plan_id
self.stripe_subscription.plan.id
end
def stripe_subscription
customer = Stripe::Customer.retrieve(self.stripe_customer_id)
customer.subscriptions.retrieve(self.stripe_subscription_id)
end
end
我有模型属性stripe_plan_id
我不希望它使用ActiveRecord在数据库中持久存在,但我需要经常检查这个参数。我想将它缓存在我的服务器上,并按需刷新它。理想情况下,我不想使用redis。
最好的方法是什么?如果可以某种方式使用||=
,我正在努力解决。
答案 0 :(得分:0)
有很多方法,我假设您已经知道如何使用您拥有的任何内容(memcached,redis,rails.cache等)进行缓存,如果不是这样,请告诉我。我建议创建一个基于id获取或重新加载缓存的缓存类。你的记忆不适用于你的情况,因为你想在控制器之间保持。
@report.fields = template.fields
然后当你想要得到这个时,你只需要打电话
def StripeCache < Struct.new(:user)
def cache_key
"#{user.id}_stripe_plan_id"
end
def get
ReadFromCache(cache_key)
end
def reload
WriteToCache(cache_key, user.stripe_plan_id)
end
end
并保存您调用的新内容
StripeCache.new(user).get
是一个额外的开销,但会抽象所有读取和写入缓存。