Spent a working day on this.
I have
class Box
has_many :users, :through => :subscriptions
end
I also have custom insert_new_users
and associate_with(new_users)
methods which use multiple INSERT to do their job quickly. Anyway, they work fine. I also have this line at the end of "associate_with" method:
def associate_with
# mysql INSERT here
self.users(true) # Should force reload
end
It works as expected when running in test environment (both controller and model tests) and it fails as expected if I remove the true
argument, which forces the reload. It also works from script/console
in development if I update_attributes
the model. But fails in development or production when I'm trying to update_attributes
from controller. It simply does not reload associations and I can see it in logs, where it says "CACHE (0.0ms)" for this query.
The weird thing - it worked before and I can't identify the moment it stopped working due to some reasons. I was hoping maybe someone knows how is this possible.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…