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?

More than 3 years have passed since last update.

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

Posted at

はじめに

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

まとめ

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

参考

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?