Ich habe mich bisher noch nicht wirklich mit den erstaunlichen Cache-Techniken von Rails befasst. Etwas, das ich wirklich nicht verstehen kann, ist, wie man ein bestimmtes Problem löst.
Angenommen, ich habe ein Blog-Modell mit vielen Posts:
class Blog < ActiveRecord::Base
has_many :posts
end
class Post < ActiveRecord::Base
named_scope :published, :conditions => ["published_at < ?", Time.now]
end
Und die show-Aktion im BlogsController zeigt eine Liste von veröffentlichten Posts:
// BlogsController
def show
@blog = Blog.find(params[:id)
end
// View
<% @blog.posts.published.each do |p| %>
<%=h p.title %>
<%= simple_format(p.content) %>
<% end %>
Der Cache muss verfallen, wenn Änderungen am Attribut published_at vorgenommen werden, ABER er muss auch verfallen, wenn published_at in die Zukunft gesetzt wird und die Zeit erreicht wird.
Könnt ihr mir ein paar Ideen und Hinweise geben, wie man dieses Problem am besten löst? Cron-Job oder verliere ich meinen Verstand?