Mon modèle Account
a les deux associations suivantes:ActiveRecord Association cache valeur Date dans des conditions clause
has_many :expenses,
:order => 'expenses.dated_on DESC',
:dependent => :destroy
has_many :recent_expenses,
:class_name => 'Expense',
:conditions => "expenses.dated_on <= '#{Date.today}'",
:order => 'dated_on DESC',
:limit => 5
Dans un de mes vues, je suis rendu des dépenses récentes comme ceci:
<% @account.recent_expenses.each do |expense| %>
...
<% end %>
Sur mon machine de développement, sur le serveur de transfert (qui s'exécute en mode production) et également sur la console de production, @account.recent_expenses
renvoie la liste correcte. Cependant, sur notre serveur de production en direct, les dépenses les plus récentes ne sont pas retournées.
Si je remplace @account.recent_expenses
avec @account.expenses
dans la vue, les plus récentes dépenses sont affichés, donc je suppose que la partie #{Date.today}
de la clause de conditions est mise en mémoire cache en quelque sorte la première fois qu'il est exécuté. Si je redémarre le cluster Mongrel de production, toutes les dépenses les plus récentes sont renvoyées correctement.
Quelqu'un peut-il penser à ce qui se produirait et comment puis-je changer la requête :recent_expenses
pour éviter que cela se produise? J'utilise Rails 2.1.0.