我正在尝试将博客帖子设置为在将来的某些日期发布。我有我的发布模式:
named_scope :published, :conditions => ["publish_at <= ?", Time.now]
我在我的控制器中使用它来调用已发布的帖子:
@postings = Posting.published
开发服务器工作正常,但我相信生产服务器需要我刷新缓存(使用“pkill -9 dispatch.fcgi”),否则当它应该发布时我不会看到新的帖子。
有没有办法在生产服务器上正确设置过帐发布日期的未来时间?我是否每次都要刷新缓存?
答案 0 :(得分:3)
你是对的,因为在加载类时会评估命名范围。
你应该重新编写它是动态的(或者更好)使用数据库的now()函数。
其中任何一个都应该有效:
named_scope :published, lambda { {:conditions => ["publish_at <= ?", Time.now]} }
注意这是如何使用lambda总是在条件哈希中返回当前时间。
named_scope :published, :conditions => "publish_at <= now()"
这是依赖于数据库的(上面应该适用于MySQL)但可能要快一点。
答案 1 :(得分:0)
检查生产环境中是否有以下任何陈述:
ActionController::Base.cache_store = :memory_store
OR
ActionController::Base.cache_store = :file_store, "/path/to/cache/directory"
OR
ActionController::Base.cache_store = :mem_cache_store
或ActionController::Base.cache_store