新手问题 [已解决] Rails 缓存随机数据的问题

karrra · October 30, 2015 · Last by karrra replied at October 30, 2015 · 2165 hits

不知道是不是关键字没找到,google 了好久都没找到相似的

现在有个需求是随机获取一个 model 的 20 条数据

Product.order('RAND()').limit(20)

然后因为希望一天之内获取的数据是不变的,我就想着加个缓存

Rails.cache.fetch("rand_products", expires_in: 1.day) do
  Product.order('RAND()').limit(20)
end

可是每次读缓存到时候得到的数据都是不一样的,求各位指点一下

改成这样就可以了

Rails.cache.fetch("rand_products", expires_in: 1.day) do
  Product.order('RAND()').limit(20).to_a
end

因为你原先缓存的 Product.order('RAND()').limit(20) 是一个 ActiveRecord::Relation 对象,直到使用数据的时候才进行实际查询, 使用 to_a 方法之后,会真正查询数据库,返回数据对象。

You need to Sign in before reply, if you don't have an account, please Sign up first.