こんにちは、現役沖縄フリーランスエンジニアのmah(MaLanka)です。
このブログでは、
僕がIT未経験から約1年でフリーランスエンジニアになるまでの過程、
ノウハウなどを書いていきます。
今回は、
- 【Rails】partialのcollectionをcacheし、有効期限(expires_in)を設定する方法
について書いていきます。
【Rails】partialのcollectionをcacheし、有効期限(expires_in)を設定する方法
結論、
下記のような感じになります。
<%= render partial: 'shared/users_info', collection: User.all, cached: true, expires_in: 10.minutes %>
やり方としては、
cache
オプションと expires_in
オプションを指定するだけなのですが、
生成されるキャッシュのキーについて補足しておきます。
生成されるキャッシュのキーについて
- shared/users_info.html.erbというパーシャルがあるとします。
<%= render partial: 'shared/users_info', collection: User.all, cached: true, expires_in: 10.minutes %>
これで生成されるキャッシュのキーは下記のような感じになります。
ビューファイルのパス:ビューファイルの更新日時から生成される一意でランダムな32文字/Userインスタンスのidとupdated_atから生成された文字列
キャッシュのキーをカスタマイズする場合
# (例えばの話)Userインスタンスのname属性をキャッシューのキーにしたい場合 # ->(user)には、User.allの中身が引数として渡ってくる <%= render partial: 'shared/users_info', collection: User.all, cached: ->(user) { user.name }, expires_in: 10.minutes %>
これで生成されるキャッシュのキーは下記のような感じになります。
ビューファイルのパス:ビューファイルの更新日時から生成される一意でランダムな32文字/Userインスタンスのname
以上です。
参考
- Cached partial collections renderer is broken for cached, expiring partials; doesn't support expires_in
- Fix issue with cached partial collections
- Ruby on Rails のフラグメントキャッシュのキャッシュキーはどのように決まるか
- コレクションキャッシュでキャッシュのキーをカスタマイズする方法
https://blog.takeyuweb.co.jp/entry/2020/09/03/145738blog.takeyuweb.co.jp
最後に
下記の表に、
フリーランスエンジニア向けの人気エージェントをまとめてみました。
エージェント選びで悩んでいる方は是非参考にしてみてくださいね★
エージェント | 詳細 | 最高単価/月 | 設立 |
---|---|---|---|
ココナラテック(旧:フリエン)(furien) | 評判をチェック | 180万円/月 | 2011年 |
ギークスジョブ | 評判をチェック | 180万円/月 | 2011年 |
フォスターフリーランス | 評判をチェック | 230万円/月 | 1996年 |
pe-bank(pebank) | 評判をチェック | 200万円/月 | 1989年 |
Midworks(ミッドワークス) | 評判をチェック | 200万円/月 | 2013年 |
レバテックフリーランス | 評判をチェック | 140万円/月 | 2005年 |