Ant*_*tre 2 caching ruby-on-rails
到目前为止,我从未真正深入研究过Rails提供的惊人的缓存技术.我真的无法理解的一件事是如何解决这个特殊问题.
鉴于我有一个包含许多帖子的博客模型:
class Blog < ActiveRecord::Base
has_many :posts
end
class Post < ActiveRecord::Base
named_scope :published, :conditions => ["published_at < ?", Time.now]
end
Run Code Online (Sandbox Code Playgroud)
BlogsController中的show动作显示已发布的帖子列表:
// BlogsController
def show
@blog = Blog.find(params[:id)
end
// View
<% @blog.posts.published.each do |p| %>
<h2><%=h p.title %></h2>
<%= simple_format(p.content) %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
当对published_at属性进行任何更改时,缓存必须到期.但是当将来放置published_at并达到该时间时,它还需要执行此操作.
你们能告诉我一些如何最好地解决这个问题的想法和指示吗?Cron-job还是我失去了理智?
您显示的代码不使用任何Rails的缓存功能.但是:published,Time.now当首次执行该代码时,您的命名范围将使用(并且在生产中,通过类缓存记住).
我怀疑你想要这个:
named_scope :published, lambda { { :conditions => ["published_at < ?", Time.now] } }
Run Code Online (Sandbox Code Playgroud)
lambda确保Rails每次都重新评估你的状况.