假设我有一个名为Thing的模型,我想在主页中看到每天创建了多少东西。
我想出了这个:
Thing.order("created_at desc").where(created_at: (Date.today - 1.month)..Date.today).group_by{|s| s.created_at.to_date}
我可以打电话给each_pair
并做我的事。
然而,这似乎非常低效:这是所有用户都可以看到的主页,而且每天只会改变几次。
我觉得我应该做某种缓存,但我不知道使用什么模式。
答案 0 :(得分:1)
虽然我觉得这些信息不足以给你一个完整的答案,但这是我的看法:
示例:
<% Order.find_recent.each do |o| %>
<%= o.buyer.name %> bought <%= o.product.name %>
<% end %>
<% cache do %>
All available products:
<% Product.all.each do |p| %>
<%= link_to p.name, product_url(p) %>
<% end %>
<% end %>
答案 1 :(得分:1)
绝对缓存该部分是一个好主意,因为它每天只有一些更新。一种可能的方法(使用片段缓存):
在您看来:
<% cache('homepage_things') do %>
<% @things.each do |thing| %>
<%= thing %>
<% end %>
<% end %>
在您的控制器中:
class ThingsController < ApplicationController
def create
@thing = Thing.new(thing_params)
if @thing.save
expire_fragment('homepage_things')
# other stuff
else
# other stuff
end
end
end