Rails: ActiveRecordのスコープで`present?`を使うとパフォーマンスが落ちることがある(翻訳)

概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Careful with present? when using ActiveRecord scopes - Andy Croll 原文公開日: 2018/09/02 著者: Andy Croll 日本語タイトルは内容に即したものにしました。 Rails: ActiveRecordのスコープでpresent?を使うとパフォーマンスが落ちることがある(翻訳) RailsではあらゆるRubyオブジェクトで#present?メソッドが利用できるので、このメソッドは多用される傾向があります。たとえば、ビューで配列をループで回す前に配列に要素があるかどうかをチェックしてからデータを表示するなどです。 しかし、#present?をスコープで使うと、思わぬパフォーマンス低下が生じることがあります。 次のように書くのではなく Active Relation(Active Recordクラスのスコープ)で#present?を使う。 books = Book.recently_released if books.present? books.paperbacks.each { |book| puts book.title } end 次のように書く #any?か#exists?を使う。 books = Book.recently_released if books.any? books.paperbacks.each { |book| puts book.title } end そうする理由 Active … Continue reading Rails: ActiveRecordのスコープで`present?`を使うとパフォーマンスが落ちることがある(翻訳)