1
1

【Rails】メモ化

Last updated at Posted at 2023-07-23
  • 一度呼び出されてから結果が変わらないものはメモ化してしまう
    • 呼び出されるたびにロジックやSQLが実行されるのを防ぐため、実行結果を丸々キャッシュする
sample1.rb
def target_member
  @member ||= Member.find(rand(10))
end

p target_member # <Member id: 5, name: "Five">
p target_member # <Member id: 5, name: "Five">
sample2.rb
def invoice?
  @invoice ||= pay_date >= Time.new(2023, 10, 1)
end

||=により

  • nil またはfalseであれば、右辺を代入する
  • nil またはfalse以外であれば、2回目以降の呼び出し時は変数に格納された値を実行する

メモ化によって再実行を避けることが出来る為、特にコストの高い計算 や、データベースアクセス といった場合においてパフォーマンスの向上が期待できる。

1
1
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
1
1