У меня есть приложение Rails 3, размещенное на Heroku, работающее с базой данных Postgres. У меня есть действие контроллера, которое должно генерировать RSS-канал, но я нахожу, что он никогда не обновляется до тех пор, пока приложение не перезагрузится (либо потому, что я делаю новый выпуск в Heroku, либо потому, что сайт неактивен какое-то время, вращается и снова возвращается). Он возвращает «устаревшие» данные, которые исключают новые элементы.scope on Date.current только обновления при перезапуске Rails
Область определяется как так, на основе сравнения ряд на моей модели называется date
и Date.current
:
class Petition < ActiveRecord::Base
scope :current, where(["petitions.date <= ?", Date.current]).order("petitions.date DESC")
scope :published, { :conditions => { :published => true } }
end
Контроллер выглядит так:
class PetitionsController < ActionController::Base
before_filter :find_diary
def rss
current_petitions.each do |petition|
puts petition.date
end
end
protected
def find_diary
@diary = Diary.find(params[:id])
end
def current_petitions
@diary.petitions.published.current.limit(25)
end
end
Как вы можете см., предполагается, что все петиции возвращаются с date
, который является сегодня или ранее. Он отлично работает на консоли Heroku: Diary.find(15).petitions.published.current.limit(25).first
всегда дает мне один на сегодня. Из журналов видно, что он вызывает функцию current_petitions
при каждом запросе канала. Но если я покину сайт в течение 24 часов, то он пока только покажет мне петиции до вчерашнего дня. Если я сделаю выпуск, чтобы добавить код отладки, он снова начнет работать.
Легко, когда вы знаете, как! – andygeers