【问题标题】:Does Heroku automatically cache Rails controller actions by default?Heroku 默认会自动缓存 Rails 控制器动作吗?
【发布时间】:2013-06-19 01:52:07
【问题描述】:

我真的傻眼了。我有一个 Rails 应用程序,它将博客文章存储在 Article 模型中。索引页面调用模型上的范围并返回最新文章。但是,当我加载页面时,只显示了一些文章,但是当我将代码复制到 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)

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

【问题讨论】:

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


    【解决方案1】:

    这不是 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 中它会加载并导致你看到的问题。

    【讨论】:

      猜你喜欢
      • 2014-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-14
      • 2016-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多