Кэшированный named_scope на Heroku? - PullRequest
2 голосов
/ 18 января 2011

У меня есть область имен, которая принимает результат запроса в качестве параметра:

scope :current_budget, where(:budget_review => Appconfig.budget_status)

Метод budget_status сам по себе определяется как

def self.budget_status
  Appconfig.find_by_name('reviewed_budget').value=="1" ? true : false
end

При локальном тестировании, если я изменил значение параметра "updated_budget", а затем снова вызвал область действия, все работает нормально.

Но на Heroku это всегда даст мне один и тот же результат, даже если я изменю параметр. Я попытался отобразить значение Appconfig.budget_status в Heroku, и оно меняется при изменении настроек.

Тем не менее, named_scope, похоже, не принимает это во внимание.

Есть ли здесь какой-нибудь трюк с кешированием? если так, как я могу избавиться от этого для этой конкретной ситуации? Иначе, у кого-нибудь есть представление о том, что может быть не так?

спасибо, п.

1 Ответ

7 голосов
/ 18 января 2011

Когда вы тестируете локально, я предполагаю, что вы запускаете среду разработки, которая будет перезагружать весь ваш код каждый раз, когда он вызывается, и из-за этого избежит этой проблемы.В производственной среде (Heroku), однако, он будет кэшировать не результат, а запрос области, если используется, как вы используете в настоящее время.

Чтобы убедиться, что запрос не кэшируется, вы можете использовать следующий синтаксис:

scope :current_budget, lambda { where(:budget_review => Appconfig.budget_status) }

Лямбда - вот что имеет значение в этом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...