我使用Rails 5.我有这个模型如何强制Rails使用我的缓存而不是始终访问数据库?
class MyObject < ActiveRecord::Base
...
belongs_to :distance_unit
和我注意到,当我有一个像下面
distance = Distance.new({:distance => my_obj.distance, :distance_unit => my_obj.distance_unit})
这将导致执行
SELECT "distance_units".* FROM "distance_units" WHERE "distance_units"."id" = $1 LIMIT $2 [["id", 1], ["LIMIT", 1]]
如下的行
没有什么不寻常,但我已经在我的DistanceUnit模式创造出了高速缓存方法
class DistanceUnit < ActiveRecord::Base
def self.cached_find_by_id(id)
Rails.cache.fetch("distanceunit-#{id}") do
puts "looking for id: #{id}"
find_by_id(id)
end
end
我想要“distance = Distance.new({:distance => my_obj.distance,:distance_unit => my_obj.distance_unit})”行来调用我的缓存功能,而不是跑到数据库。我怎样才能做到这一点?
你用什么来存储缓存? – murb
哦好问题。我在配置文件中有“config.cache_store =:memory_store”。 – Dave