はじめに
Rails には、関連先のメソッドを呼び出す時に、キャッシュを使用することで高速化する仕組みがあります。
しかし、キャッシュではなく、データーベースから直接読み込みしたい場合があると思います。
今回はそのような場合のキャッシュ制御方法についてご紹介したいと思います。
関連性
以下のようなAnimal
モデル、Panda
モデルの構成を作成します。
animal.rb
class Animal < ApplicationRecord
has_many :pandas
end
panda.rb
class Panda < ApplicationRecord
belongs_to :animal
end
キャッシュ制御
reload
メソッド を使用することで、キャッシュを破棄してくれます。
animal = Animal.first
animal.pandas # データベースから pandas を取得する
animal.pandas.size # pandas のキャッシュコピーが使われる
animal.pandas.reload.empty? # pandas のキャッシュコピーが破棄される
# その後データベースから再度読み込まれる
まとめ
まだまだ知らないことが多いので、引き続き勉強ですね〜