2013-06-21 2 views
2

Я серьезно опечатался. У меня есть приложение Rails, которое хранит сообщения в блоге в модели статьи. Страница индексов вызывает область действия модели и возвращает последние статьи. Однако, когда я загружаю страницу, появляются только некоторые из статей, но когда я копирую код на консоль Heroku, в результатах отображаются отсутствующие статьи.Действительно ли Heroku автоматически кэширует действия контроллера Rails по умолчанию?

Вот индекс действия:

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) 

Метод работает должным образом, когда я называю его из консоли, но когда я загрузить страницу, не все результаты появляются. Есть идеи?

ответ

4

Это не герой специфичный, но область хранения «DateTime.now», когда она впервые интерпретируется. В принципе, DateTime.now - это когда вы нажимаете на герою, а не «сейчас».

Вы хотите использовать лямбда здесь вместо

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

в Rails4, это не будет проблемой (это даст вам ошибку нагрузки), но в Rails3 она будет загружать и вызывать проблемы, которые вы видите.