2023年12月14日のブックマーク (1件)

  • カラムを絞ってpreloadする

    課題 関連先のテーブルのカラムを絞りつつ、N+1問題を回避するためpreloadしたい。 解決 selectで取得するカラムを絞るscopeを用意し、has_manyの第2引数で指定する。 例として下のようなテーブル定義とモデルがあるとする。 booksテーブルのbodyカラムはTEXT型でサイズが大きくなりうるため、bodyカラム以外をロードするためのmetadataというscopeを定義し、関連元のAuthorにmetadataを利用したbooks_metadataという関連を定義しておく。 ActiveRecord::Schema.define do create_table :authors do |t| t.string :name end create_table :books do |t| t.string :title t.text :body t.references :

    letitride
    letitride 2023/12/14