0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Rails】関連付けメソッドのキャッシュ制御

Last updated at Posted at 2021-07-19

はじめに

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 のキャッシュコピーが破棄される
                              # その後データベースから再度読み込まれる

まとめ

まだまだ知らないことが多いので、引き続き勉強ですね〜

参考


会社紹介

株式会社 Mosaica
最先端テクノロジーで社会課題を解決し、持続可能な未来を創造する IT カンパニー。
AI ソリューション、クラウド統合、DX 推進、経営コンサルティングなど包括的なサービスでビジネス変革を支援しています。

詳しくは 公式サイト までお気軽にご相談ください。
公式サイト: https://mosaica.co.jp/

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?