【发布时间】:2013-01-14 22:10:03
【问题描述】:
我在 3.1 中使用片段缓存。 Rails 应用程序有一个片段没有过期,我不知道为什么。这是我想根据时间(每小时)过期的片段。我在 Heroku 上,使用 Memcachier 插件进行缓存。我似乎没有任何其他缓存问题。
在我的应用中,共有三种模型:用户、社区和活动。在 Community#index 上,有一个片段显示此社区中的用户的活动,我希望每小时过期。计算是 Activity 模型中的一种方法,工作正常 - 只是片段每小时到期(并刷新)。
在我看来,我有:
<% cache("activity_#{community.id}", :expires_in => 1.hour) do %>
<-- content >
<% end %>
我还尝试通过在 User 模型中为缓存添加过期时间来使其成为计划任务。
def self.expire_activity
Community.find_each do |community|
ActionController::Base.new.expire_fragment('activity_#{community.id}')
end
end
我试图按照question 的答案来确定如何使模型中的缓存过期,但是使用这段代码,我得到了错误:
NoMethodError: undefine method 'expire_fragment' for #<Class:0x5ffc3e8>
【问题讨论】:
-
您找到解决方案了吗?我也面临同样的问题。
标签: ruby-on-rails-3 caching memcached