はじめに
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 のキャッシュコピーが破棄される
# その後データベースから再度読み込まれる
まとめ
まだまだ知らないことが多いので、引き続き勉強ですね〜
参考
- Railsガイド - キャッシュ制御
会社紹介
株式会社 Mosaica
最先端テクノロジーで社会課題を解決し、持続可能な未来を創造する IT カンパニー。
AI ソリューション、クラウド統合、DX 推進、経営コンサルティングなど包括的なサービスでビジネス変革を支援しています。
詳しくは 公式サイト までお気軽にご相談ください。
公式サイト: https://mosaica.co.jp/