Policy(規約)というモデルがあり、versionというカラムを持っています。
最新の規約バージョンを取得したいとき、一般的にはscopeを使うと思います。
ですが、scopeだと毎回DBにアクセスしてしまうので頻繁に使う場合好ましくありません。
そこでクラスメソッドを定義して、クラスインスタンス変数に代入する形にすればよいのではと思いました。
ですが、ネットで検索してもクラスインスタンス変数をつかったこのような手段は見つからず、何かしらの理由があって使われていないのかなと思ったのですが、理由がわかりません。
非常に良い手段だと思ったのですがいかがでしょう?
ruby
1class Policy < ApplicationRecord 2 3 # 一般的な手段、毎回DBアクセスしてしまう 4 scope :latest_version -> { maximum(:version) } 5 6 # これならDBアクセスを減らせる? 7 def self.latest_version 8 @latest_version ||= maximum(:version) 9 end 10 11end
Policy.latest_version #=> 10
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/01/26 00:18
2022/01/26 00:42
2022/01/26 01:28
2022/01/26 05:53 編集