How to discard ActiveRecord's association cache
You know that ActiveRecord caches associations so they are not loaded twice for the same object. You also know that you can reload
an association to make Rails load its data from the database again.
Copyuser.posts.reload # discards cache and reloads and returns user.posts right away # => [...]
If you want to discard the cache but not query the database (only the next time the association is accessed), you can use reset
:
Copyuser.posts.reset # discards cache, but does not load anything yet user.posts # SQL query happens to load new state # => [...]
Note that reset
returns the association/scope.
Hence, the above will not seem to work on the Rails console, just because the return value is inspected and thus resolved right away.
Try it like this:
Copyuser.posts.reset; nil # no query user.posts # query, and returns results
Does your version of Ruby on Rails still receive security updates?
Rails LTS provides security patches for old versions of Ruby on Rails (3.2 and 2.3).