我认真对待。我有一个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)
当我从控制台调用它时,该方法正常工作,但是当我加载页面时,并非所有结果都显示出来。有什么想法吗?
答案 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中它会加载并导致你看到的问题。