Active Recordで発行するクエリに関するTipsをいくつか紹介します。
😎 like句のサニタイズ:sanitize_sql_like
like句の検索ワードはサニタイズを忘れてしまいがちです。そこでサニタイズをするsanitize_sql_likeを使うべきです。
# Like句の検索ワードのサニタイズがされていない |
😸 グルーピングしたカウント:group.count
group(:column).countでグルーピングした単位でcountを取得できます。
Article.group(:category_id).count |
joinと組み合わせてカウントを行いたい場合は「activerecord-precount」というRubyGemsが便利です。
🐡 少しずつデータを取得:find_each
find_eachは一定件数ずつデータをDBから取得してメモリに展開し処理を行います。大量のデータを処理する場合はメモリに負荷をかけずに効率的に処理を行うことができます。
Article.find_in_batches(batch_size: 100).to_a |
find_eachはorderとlimitを無視するので、注意してください。
🐹 ModelでURLを取得する
ControllerやView以外で、routes.rbで指定したURLを取得する場合はRails.application.routes.url_helpersをincludeします。
class Article < ApplicationRecord |
