Heroku默认会自动缓存Rails控制器操作吗?

时间:2013-06-21 20:15:06

标签: ruby-on-rails ruby-on-rails-3 activerecord heroku

我认真对待。我有一个Rails应用程序,可以在文章模型中存储博客文章。索引页面调用模型上的范围并返回最新文章。但是当我加载页面时,只显示了一些文章,但是当我将代码复制到Heroku控制台时,结果中会显示缺少的文章。

这是索引操作:

def index
    @articles = Article.featured_published_articles.order("date_time DESC").page(params[:page])
end

这是范围:

scope :featured_published_articles , where("featured = ? AND status IN (?) AND date_time <= ?", true , ['published','published-pending'], DateTime.now)

当我从控制台调用它时,该方法正常工作,但是当我加载页面时,并非所有结果都显示出来。有什么想法吗?

1 个答案:

答案 0 :(得分:4)

它不是特定于heroku的,但是当它首次被解释时,范围是存储“DateTime.now”。基本上,DateTime.now是你推送到heroku而不是“现在”。

你想在这里使用lambda

scope :featured_published_articles , -> {where("featured = ? AND status IN (?) AND date_time <= ?", true , ['published','published-pending'], DateTime.now) }

在Rails4中,这不会是一个问题(它会给你一个加载错误),但是在Rails3中它会加载并导致你看到的问题。