Ruby on Rails:为博客帖子设置未来的“发布”日期

时间:2009-11-05 02:24:14

标签: ruby-on-rails ruby

我正在尝试将博客帖子设置为在将来的某些日期发布。我有我的发布模式:

 named_scope :published, :conditions => ["publish_at <= ?", Time.now]

我在我的控制器中使用它来调用已发布的帖子:

  @postings = Posting.published

开发服务器工作正常,但我相信生产服务器需要我刷新缓存(使用“pkill -9 dispatch.fcgi”),否则当它应该发布时我不会看到新的帖子。

有没有办法在生产服务器上正确设置过帐发布日期的未来时间?我是否每次都要刷新缓存?

2 个答案:

答案 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

的任何其他设置